JavaScript 变量的声明、变量提升有哪些考点?

47 阅读2分钟

发展历程

先说说 JavaScript 的发展历程:

JavaScript 是一种高级编程语言,最初由Netscape 公司的 Brendan Eich 开发。它最早被称为 LiveScript,后来改名为 JavaScript。自 1995 年以来,JavaScript 已成为 Web 开发的重要组成部分。

接下来进入正题。

变量声明

变量声明使用关键字 varletconst

考点:varletconst关键字的区别。

  • 变量提升:var 声明的变量会在代码执行前被提升到当前作用域的顶部,而在 ECMAScript 6 中,letconst不存在变量提升。在变量声明之前引用这个变量,将抛出引用错误(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 声明变量。

📢 update 同步更新

掘金专栏 | 知乎专栏 | Github | 简书专栏 | CSDN | segmentfault