js声明变量三种方式
Posted 月疯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js声明变量三种方式相关的知识,希望对你有一定的参考价值。
变量声明的三种方式:
let
const
var
var
声明与 let
相似。大部分情况下,我们可以用 let
代替 var
或者 var
代替 let
,都能达到预期的效果。
let和var的区别:
用
var
声明的变量,不是函数作用域就是全局作用域。它们在代码块外也是可见的(译注:也就是说,var
声明的变量只有函数作用域和全局作用域,没有块级作用域)。
if (true) {
var test = true; // 使用 "var" 而不是 "let"
}
alert(test); // true,变量在 if 结束后仍存在
由于 var
会忽略代码块,因此我们有了一个全局变量 test
。
如果我们在第二行使用 let test
而不是 var test
,那么该变量将仅在 if
内部可见:
if (true) {
let test = true; // 使用 "let"
}
alert(test); // Error: test is not defined
对于循环也是这样的,var
声明的变量没有块级作用域也没有循环局部作用域:
for (var i = 0; i < 10; i++) {
var one = 1;
// ...
}
alert(i); // 10,"i" 在循环结束后仍可见,它是一个全局变量
alert(one); // 1,"one" 在循环结束后仍可见,它是一个全局变量
如果一个代码块位于函数内部,那么 var
声明的变量的作用域将为函数作用域:
function sayHi() {
if (true) {
var phrase = "Hello";
}
alert(phrase); // 能正常工作
}
sayHi();
alert(phrase); // Error: phrase is not defined
可以看到,var
穿透了 if
,for
和其它代码块。这是因为在早期的 javascript 中,块没有词法环境,而 var
就是这个时期的代表之一。
“var” 允许重新声明
如果我们用
let
在同一作用域下将同一个变量声明两次,则会出现错误:
let user;
let user; // SyntaxError: 'user' has already been declared
使用 var
,我们可以重复声明一个变量,不管多少次都行。如果我们对一个已经声明的变量使用 var
,这条新的声明语句会被忽略。
总结:
以前使用的var和val一个是可变和不可变的变量;现在都是用let和const声明变量,现在的标准基本都是let和const了。
以上是关于js声明变量三种方式的主要内容,如果未能解决你的问题,请参考以下文章