发展历程
先说说 JavaScript 的发展历程:
JavaScript 是一种高级编程语言,最初由Netscape 公司的 Brendan Eich 开发。它最早被称为 LiveScript,后来改名为 JavaScript。自 1995 年以来,JavaScript 已成为 Web 开发的重要组成部分。
接下来进入正题。
变量声明
变量声明使用关键字 var
、let
或 const
。
考点:var
、let
或 const
关键字的区别。
变量提升
:var 声明的变量会在代码执行前被提升到当前作用域的顶部,而在 ECMAScript 6 中,let
和const
不存在变量提升。在变量声明之前引用这个变量,将抛出引用错误(ReferenceError)。这个变量将从代码块一开始的时候就处在一个“暂时性死区”,直到这个变量被声明为止。 例子:
/**
* 例子 1
*/
console.log(x === undefined); // true
var x = 3;
/**
* 例子 2
*/
// will return a value of undefined
var myvar = "my value";
(function() {
console.log(myvar); // undefined
var myvar = "local value";
})();
/**
* 例子 3
*/
console.log(x); // ReferenceError
let x = 3;
上面的例子,也可写作:
/**
* 例子 1
*/
var x;
console.log(x === undefined); // true
x = 3;
/**
* 例子 2
*/
var myvar = "my value";
(function() {
var myvar;
console.log(myvar); // undefined
myvar = "local value";
})();
-
作用域:var 声明的变量的作用域是函数作用域或全局作用域,而 let 和 const 声明的变量的作用域是块级作用域。 备注知识点: tips1:在函数之外声明的变量,叫做
全局变量
,因为它可被当前文档中的任何其他代码所访问。在函数内部声明的变量,叫做局部变量
,因为它只能在当前函数的内部访问。 -
重复声明:var 声明的变量可以被重复声明,而 let 和 const 声明的变量不能被重复声明。
-
初始值:var 和 let 声明的变量可以在声明时不初始化,而 const 声明的变量必须在声明时初始化,且不可重新赋值。
-
可变性:var 和 let 声明的变量的值可以被重新赋值,而 const 声明的变量的值不能被重新赋值。
总之,如果一个变量的值会被改变,则应该使用 let 声明变量。如果变量的值不会被改变,则应该使用 const 声明变量。而如果需要在全局作用域中声明变量,则可以使用 var 声明变量。