No.18 JavaScript变量

一、变量声明

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

No.18 JavaScript变量_第1张图片
小驼峰命名法

我们尽量不要直接使用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变量)