在javaScript中有三种声明变量的方式:const var let。
const:用于声明常量。注意:定义的变量的时候,必须同时初始化,且其值之后不可以修改。
const PI=3.14; // const a;//报错。没有赋初值。 console.log('const PI:',PI);//输出 // PI = 3.1415926;//报错。不能赋值给一个常量。var:最常用的声明变量关键字。 定义的变量的时候,若没有初始化,不报错,会输出undefined。其值之后可以修改。var可以用来声明全局变量,也可以声明局部变量,依据它们声明的位置:
全局变量:在函数外定义的变量;(注意:若没有使用关键字声明的变量,默认为全局变量。)作用域是整个代码文件。 局部变量:在函数内定义的变量。作用域是当前的函数内部。var b ;//不报错。 console.log('var b:',b);//输出undefined b = 1 ;//赋初值 console.log('var b,外部赋值1:',b);//输出1 //在代码块里的情况 { // console.log('var b,代码块的变量可以进入代码块内:',b);//输出1 var b=2;//重新定义 console.log('var b,重新赋值后:',b);//输出2 } console.log('var b,重新赋值后在代码块外的值:',b);//输出2 //在函数里的情况 function varFun(){ console.log('var b,全局变量b:',b);//输出2 var b=3;//局部变量b console.log('var b,局部变量b:',b);//输出3,同时上一个输出undefined(具体原因,见文末) var b2 = 33;//局部变量b2,在函数外获取不到值 b3 = 333;//全局变量b3,在函数外可以获取到值 } varFun();//执行函数 console.log('var b,函数执行后,函数外的b是全局变量b的值:',b); // console.log('函数内var定义的变量b2=33,在外部获取不到:',b2);//报错,b2 为定义。 console.log('函数内确实关键字定义的变量b3=333,会被当做全局变量:',b3);//输出333let:块级作用域 。在块级{}里面用let定义的变量,离开当前的块{}之后,就不能使用(有点像局部变量,但作用域不一样)。注意:{...}一对花括弧就就是一个特定的代码块,包括直接的{},流程语句的{},函数的{},....。函数声明时本身就带有{},也是属于一个代码块。
var c=11; { let c=12; console.log('let c=12,b的值:',c);//输出12 } console.log('代码块外c的值:',c);//输出11【关于var声明变量,在函数里面的那个问题:】原因是:function作用域里的局部变量声明会被提前到最前面。详细的可见:http://www.cnblogs.com/silentjesse/p/4024536.html
新闻热点
疑难解答