No.18 JavaScript变量

作者: testleaf | 来源:发表于2020-01-06 13:53 被阅读0次

    一、变量声明

    var age; // 声明一个 名称为age 的变量
    var 是一个 JS关键字,用来声明变量( variable 变量的意思 )。使用该关键字声明变量后,计算机会自动为变量分配内存空间,不需要程序员管;
    age 是程序员定义的变量名,我们要通过变量名来访问内存中分配的空间;

    二、变量赋值

    age = 10; // 给 age 这个变量赋值为 10
    = 用来把右边的值赋给左边的变量空间中 此处代表赋值的意思;
    变量值是程序员保存到变量空间里的值

    三、变量初始化

    var age = 18; // 声明变量同时赋值为 18
    声明一个变量并赋值, 我们称之为变量的初始化。

    四、变量更新

    var age = 18;
    age = 81; // 最后的结果就是81,因为18 被覆盖掉了
    一个变量被重新复赋值后,它原有的值就会被覆盖,变量值将以最后一次赋的值为准。

    五、变量同时声明多个

    var age = 10, name = 'zs', sex = 2;
    同时声明多个变量时,只需要写一个 var, 多个变量名之间使用英文逗号隔开。

    六、变量声明特殊情况

    情况 说明 结果
    var age; console.log (age); 只声明 不赋值 undefined
    console.log(age); 不声明 不赋值 直接使用 报错
    age = 10; console.log (age); 不声明 只赋值 10,不报错,全局变量

    七、变量命名规范

    由字母(A-Za-z)、数字(0-9)、下划线(_)、美元符号( $ )组成,如:usrAge, num01, _name
    严格区分大小写。var app; 和 var App; 是两个变量
    不能 以数字开头。 18age 是错误的
    不能 是关键字、保留字。例如:var、for、while
    变量名必须有意义。 MMD BBD nl → age
    遵守小驼峰命名法。首字母小写,后面单词的首字母需要大写。 myFirstName

    小驼峰命名法
    我们尽量不要直接使用name作为变量名。

    标识符:就是指开发人员为变量、属性、函数、参数取的名字。
    标识符不能是关键字或保留字。
    变量、函数的命名必须要有意义;
    变量的名称一般用名词;
    函数的名称一般用动词;

    关键字:是指 JS本身已经使用了的字,不能再用它们充当变量名、方法名。
    包括:break、case、catch、continue、default、delete、do、else、finally、for、function、if、in、instanceof、new、return、switch、this、throw、try、typeof、var、void、while、with 等。

    保留字:实际上就是预留的“关键字”,意思是现在虽然还不是关键字,但是未来可能会成为关键字,同样不能使用它们当变量名或方法名。
    包括:boolean、byte、char、class、const、debugger、double、enum、export、extends、fimal、float、goto、implements、import、int、interface、long、mative、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile 等。
    注意:如果将保留字用作变量名或函数名,那么除非将来的浏览器实现了该保留字,否则很可能收不到任何错误消息。当浏览器将其实现后,该单词将被看做关键字,如此将出现关键字错误。

    八、变量作用域

    JavaScript(ES6前)的作用域有两种:
    全局作用域:作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件;
    局部作用域(函数作用域):作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域。

    JS 没有块级作用域(在ES6之前)。
    块作用域由 { } 包括。
    在其他编程语言中(如 java、c#等),在 if 语句、循环语句中创建的变量,仅仅只能在本 if 语句、本循环语句中使用。

    1. 全局变量

    在全局作用域下声明的变量叫做全局变量(在函数外部定义的变量)。
    全局变量在代码的任何位置都可以使用
    在全局作用域下 var 声明的变量 是全局变量
    特殊情况下,在函数内不使用 var 声明的变量也是全局变量(不建议使用)

    2. 局部变量

    在局部作用域下声明的变量叫做局部变量(在函数内部定义的变量)
    局部变量只能在该函数内部使用
    在函数内部 var 声明的变量是局部变量
    函数的形参实际上就是局部变量

    全局变量:在任何一个地方都可以使用,只有在浏览器关闭时才会被销毁,因此比较占内存;
    局部变量:只在函数内部使用,当其所在的代码块被执行时,会被初始化;当代码块运行结束后,就会被销毁,因此更节省内存空间。

    3. 作用域链

    只要是代码,就至少有一个作用域
    写在函数内部的就是局部作用域
    如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
    根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链
    作用域链:采取就近原则的方式来查找变量最终的值

    相关文章

      网友评论

        本文标题:No.18 JavaScript变量

        本文链接:https://www.haomeiwen.com/subject/ouqkactx.html