javascript变量的声明、赋值、变量提升、变量作用域

可以把变量看做存储数据的容器,JavaScript中变量是弱类型,即无需声明变量的具体类型,当变量被赋值时才确定数据类型。

声明(创建) JavaScript 变量

一、变量声明

定义时用关键字:var。如果不用var,则为全局变量。

二、变量赋值(初始化)

变量声明后可以存放任何类型的值,未经赋值(初始化)的变量,会保存一个特殊的值“undefined”,JavaScript可以直接初始化变量,用“=”号为变量赋值,如 var message=“Hello world”;

三、变量提升

javascript是解释性语言,主要特点为解释一行执行一行。javascript执行前会先语法分析和预编译。
js运行时会进行三件事:
1.语法分析:会在代码执行前对代码进行通篇检查,以排除一些低级错误。
2.预编译:发生在代码执行的前,变量提升就发生在预编译阶段,它把变量和函数的声明提升至作用域的顶端。
3.解释执行:顾名思义就是执行代码,预编译之后才是从上到下,一行一行解释执行。
对于代码var a =1;来说,编译器看到的是两行代码var a; a = 1;第一个语句是声明语句,在编译阶段处理。第二个语句是赋值语句,在解释执行阶段处理。
注意:
1、提升的部分只是变量声明,赋值语句和可执行的代码逻辑还保持在原地不动
2.提升只是将变量声明提升到变量所在的作用域范围的顶端,并不是提升到全局范围

在非严谨模式下,这四组代码打印出不同的结果

console.log(a);//  undefined
var a = 1;

console.log(a);  //浏览器会进行报错,a is not defined

var a=1;
console.log(a);  //1

a=1;
console.log(a);  //1
四、变量的作用域(scope)

变量的作用域就是变量可被访问的范围。分为全局作用域和局部作用域。
1、全局变量拥有全局作用域,在JavaScript代码中的任何地方都有定义。
2、局部变量是在函数体内声明而且只作用在函数体内部的变量。

实际上,末定义直接赋值的变量自动声明为拥有全局作用域,全局变量都是window对象的属性。

五、变量的值

变量初始化后才确定数据类型,JavaScript中的值分为2大类:基本类型和引用类型。

基本类型:
 数字类型:Number;字符串类型:String;布尔类型:Boolean(true和false);Undefined;Null。
引用类型:
 函数、数组、日期、正则、错误。
 注意:所有的引用类型都是对象,也就是Object对象下的一个类。

猜你喜欢

转载自blog.csdn.net/dreamingbaobei3/article/details/88395168