JavaScript 变量的声明
变量通过 var 来声明;
下面是要避免的,否则写代码的时候可能会把自己给坑了;
-
重复声明;
-
不声明直接赋值
-
不要更改变量的类型,开始是值类型,后面就不要改为数值或别的别的了,开始如果用来储存某个属性值,就不要再用在别的属性上了;
推荐:先声明,后定义;
-
需要读写的变量,读写前,一定要声明;
-
需要运算的变量,运算前,一定要赋值;
-
书写的时候,推荐把变量名放在页面的上面(上部分)去声明 + 定义;这样不仅可以放心大胆的用,而且可以方便查找变量;
-
在任何情况下声明变量都要先声明;在使用一个变量之前应当先声明,变量是使用关键字 var/let/const 来声明的 (const 声明和定义必须一起做);
var a=1; function test(){ var b=c=2;//这时候会隐式声明全局变量; } test(); console.log(a,c)
上面是非常不好的写法;不要写 var b=c=2
这种声明;上面代码中 c 就会被隐式声明为全局变量;
下面这种写法是可以的
var a= 1,c;
function test(){
var b=c=2;
}
test();
console.log(a,c)
因为开始 c 已经声明了,后面只是给 c 赋值;
多个变量声明赋值时候,同一类的变量推荐下面这种写法;
var name="anbang",
age=26,
height="174cm";
这样既可以简洁,又保证可读性;
注意:任何变量赋值前都需要声明变量,不要隐式创建全局变量;
重复声明和遗漏声明的区别:
在 javascript 里使用 var
重复声明是合法而且不会有任何事情的,如果重复声明带有初始化的值,那么就和一条简单的赋值语句没有什么两样,但是如果你忘记声明了,试图读取一个没有声明的变量的值,javascript 可能会报错;
在严格模式中,给一个没有声明的变量赋值也是会报错的;非严格模式下虽然不会报错,但是不要抱着侥幸的心理;这是一个不好的习惯,建议始终使用 var 来声明变量;
ES6 扩展了 2 种声明方法;
- let
- 声明一个块作用域的局部变量,可以选择将其初始化为一个值
- const
- 声明一个只读的常量
使用关键词 var。例如 var x = 42。这个语法可以用来声明局部变量和全局变量。
使用关键词 let。例如 let y = 13。这个语法可以用来声明块作用域的局部变量;ES6 中更推荐用这个来声明变量;
用 var 或 let 声明的且未赋初值的变量,值会被设定为 undefined;undefined 值在布尔类型环境中会被当作 false。所以程序中,利用数据的 true 和 false 判断逻辑也是常见的;
常量不可以通过赋值改变其值,也不可以在脚本运行时重新声明。它必须被初始化为某个值。
const myName="zhu";
let age=2;
age =22;
// myName=4;//Error
console.log(age);
const 定义和声明必须一起
const 是声明定义一个常量,后续就不可以修改了,所以不能先声明后定义,必须一起做
//错误的
const a;//Uncaught SyntaxError: Missing initializer in const declaration
a = 10;
//正确的
const a = 123
常量的作用域规则与 let 块级作用域变量相同。若省略 const 关键字,则该标识符将被视为变量。
if(true){
var a=2;
}
if(true){
let b=3;
}
console.log(a);
console.log(b);//b is not defined
在同一作用域中,不能使用与变量名或函数名相同的名字来命名常量。