JavaScript中函数的声明方式、作用域

1、函数的调用

函数之家可以相互进行调用

       //1-函数可以相互调用
        function fn() {
            console.log(111);
            fn1()//在fn中调用了fn1函数
        }
        fn();
        function fn1() {
            console.log(22);
        }
        fn1()

案列展示: 根据用户输入年份,输出当年2月份的天数

     //案列-根据用户年份输出2月份天数
        function backDay() {
            var year = prompt('请输入年份:');
            if (isRun(year)) {
                alert('当前年份是闰年,2月份有29天!')
            } else {
                alert('当年是平年,2月份有28天!')
            }
        }
        backDay();
        function isRun(year) {
            var flag = false;
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                flag = true;
            }
            return flag
        }

2、函数的两种声明方式

(1)利用函数关键字自定义函数(命名函数)

function fn(){

}

fn()

(2)函数表达式(匿名函数)

var 变量名=function(){}

//4.2没有名字的函数
    (function () { console.log(123) }
        )();//加括号执行
 //4.3
     (function () {
         console.log(345)
        }())
       + function () {
           console.log('thr')
         }()
        - function () {
            console.log(666)
         }()
        ~function () {
            console.log(000)
        }()
        !function () {
            console.log('xxh')
        }()

3、作用域

1、作用域:代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性,更重要的是为减少命名冲突

2、js的作用域分为:全局作用域和局部作用域

3、全局作用域:整个js标签或是一个单独的js文件;

4、局部作用域:在函数内部就是局部作用域,只在函数内部起效果和作用

变量作用域

变量的作用域:

分为全局变量和局部变量

注意:

如果函数内部没有声明变量 var,则用的是全局变量;如果在函数内部里声明了变量则不会使用全局变量;

  //作用域【全局变量和局部变量】;局部作用域可以拿到全局作用域的值
        var num = 123
        function fn() {
            var num = 1;
            num1 = 123
            return num;
        }
        fn()
        var result = fn()
        // //全局作用域拿不到局部作用域的值
        console.log(result)
        console.log(num1)
        console.log(num)

4、预解析

JavaScript运行分为两步:预解析和代码执行

1、js中预解析会把js里所有的var 还有function提升到当前作用域的最前面

2、代码执行,根据书写顺序从上往下执行

3、预解析分为变量预解析(变量提升)和函数预解析(函数提升)

    (1)变量提升:就是把所有的变量声明提升到当前作用域最前面,不提升复制操纵

    (2)函数提升:把所有函数声明提升到当前作用域最前面,不调用函数。

   //案列展示:
        f1();
        console.log(c);
        console.log(b);
        console.log(a);
        function f1() {
            var a = b = c = 9;
            console.log(a);
            console.log(b);
            console.log(c);
        }

5、对象 

(1)对象定义

对象是一组无序的相关属性和方法的集合,所有事物都是对象,比如字符串、数值、数组、函数等等

对象是有方法和属性组成的

  • 属性:事物的特征,在对象中用属性来表示
  • 方法:事物的行为,在对象中用方法来表示

(2)创建对象的三种方式

1、对象字面量: {}

  (1)里面属性或方法用键值对的形式  键 属性吗:值 属性值

   (2)多个属性/方法中间用逗号隔开

   (3)方法冒号后面跟的是一个匿名函数

   (4)使用对象:调用对象的属性—对象名.属性名或者是通过对象名['属性名']

                调用对象的方法:  对象名.方法名()

  var obj = {
            uname: 'xxh',
            age: '18',
            sex: '女',
            sayHi: function () {
                console.log('hello!');
            }
        }
        //调用对象/方法
        console.log(obj.uname);
        console.log(obj['age']);
        obj.sayHi();

 2、通过new object 创建对象

(1)利用等号=赋值的用法 添加对象的属性和方法

(2)每个属性和方法之间用分号结束

调用方法同上

   var obj = new Object()//创建一个空对象
        obj.uname = 'hhh';
        obj.age = 20;
        obj.sayHi = function () {
            console.log('Hi!!!');
        }
        console.log(obj.uname);
        console.log(obj['age']);
        obj.sayHi();

 3、利用构造函数创建

语法格式:

function 构造函数名(){

        this.属性=值;

        this.方法=function(){}

}

new 构造函数名();

(1)构造函数名首字母要大写

(2)构造函数不需要return就可以返回结果

(3)调用构造函数时必须使用new

(4)属性和方法前面必须添加this

 function Star(uname, age, sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
        }
        var obj = new Star('小he', 20, '女');
        console.log(obj.name);
        console.log(obj['age']);

 

### CCS烧录代码失败的原因分析 在使用TI毫米波雷达开发过程中,遇到`cannot find file "libsleep_xwr68xx.aer4f"`的报错可能源于以下几个方面: #### 1. 文件路径配置不正确 如果工程中缺少指定库文件 `libsleep_xwr68xx.aer4f` 或者其路径未被正确定义,则可能导致此问题。通常情况下,该文件应位于项目的链接器设置中的库目录下[^1]。 #### 2. 工程依赖缺失 某些必要的源文件或头文件未能正确添加到项目中也可能引发类似的错误。例如,在另一个案例中提到,“DSP2833x_MemCopy.c” 这样的核心组件如果没有加入工程则会触发编译阶段的问题[^2]。 #### 3. 构建工具链异常 构建脚本执行不当或者相关参数设定有误同样会影响最终生成物的质量。比如通过命令行调用 mkimage 实用程序时若选项不符合预期目标架构的要求就会造成不可预见的结果[^3]。 --- ### 解决方案 针对上述几种可能性提供如下建议措施来修复CCS烧录过程中的这些障碍: #### 配置正确的库文件位置 确认所有必需的静态/动态链接库均已存在于当前工作区内的适当子文件夹之中,并且它们已被纳入至Linker Settings下的Library Files列表里。 ```plaintext Project -> Properties -> C/C++ Build -> Settings -> TI Linker -> Library files ``` #### 添加遗漏的关键模块 仔细核查是否有任何重要的实现单元尚未导入工程项目结构之内。特别是像"DSP2833x_MemCopy.c"这样的基础功能部件应当显式声明并关联起来以便顺利完成整个应用程序的整体组装流程。 #### 调整制作镜像的具体指令序列 对于涉及外部固件映射创建的操作而言,确保所使用的各项开关以及输入输出数据形式均严格匹配实际硬件平台的需求是非常关键的一环。下面给出了一条标准样例供参考对比之用: ```bash ./mkimage -A arm -O U-Boot -C none -T script -d debrick-nand.txt debrick.scr ``` > **注意**: 上述例子适用于特定类型的启动加载程序环境定制场景, 用户需依据自身具体情况做出相应调整. --- ### 总结说明 综上所述,当遭遇类似于无法定位某个具体资源之类的状况时,可以从三个方面入手排查即验证资源配置准确性、补充潜在丢失的部分以及优化自动化生产环节的各项细节处理方式从而达到彻底消除此类技术难题的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yoghurt&girl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值