JavaScript中用let语句声明作用域的用法讲解
来源: 阅读:792 次 日期:2016-06-25 14:18:07
温馨提示: 小编为您整理了“JavaScript中用let语句声明作用域的用法讲解”,方便广大网友查阅!

首先要注意let是ES6中的东西,起码是IE10之前的IE浏览器兼容要千万当心!嗯...然后我们来看JavaScript中用let语句声明作用域的用法讲解

语法

let variable1 = value1

参数

variable1

要声明的变量的名称。

value1

赋给变量的初始值。

备注

使用 let 语句声明一个变量,该变量的范围限于声明它的块中。  可以在声明变量时为变量赋值,也可以稍后在脚本中给变量赋值。  

使用 let 声明的变量,在声明前无法使用,否则将会导致错误。

如果未在 let 语句中初始化您的变量,则将自动为其分配 JavaScript 值 undefined。

示例:

var l = 10;

{

  let l = 2;

  // At this point, l = 2.

}

// At this point, l = 10.

// Additional ways to declare a variable using let.

let index;

let name = "Thomas Jefferson";

let answer = 42, counter, numpages = 10;

let myarray = new Array();

块级作用域

for(var i = 0; i < 10; i++){}

console.log(i); //10

for(let j = 0; j < 10; j++){}

console.log(j); //"ReferenceError: j is not defined

不存在变量提升

console.log(a); // 输出undefined

console.log(b); // 报错ReferenceError

console.log(c); // 报错ReferenceError

var a = 2;

let b = 2;

注意区别undefined和ReferenceError

暂时性死区(TDZ)

只要进入当前块级作用域,所使用的变量已经存在了,但在声明之前都属于死区,不可进行操作。

注意: typeof不再是100%安全的操作

typeof x; // ReferenceError

typeof y // undefined

let x;

不允许重复声明

let x = 1;

let x; // "SyntaxError: Identifier 'x' has already been declared

var y = 2;

var y = 3; // y = 3

块级作用域

// 匿名函数写法

(function () {

 var tmp = ...;

 ...

}());

// 块级作用域写法

{

 let tmp = ...;

 ...

}

ES5的严格模式规定,函数只能在顶层作用域和函数内声明,其他情况(比如if代码块、循环代码块)的声明都会报错。

// ES5

'use strict';

if (true) {

 function f() {} // 报错

}

ES6由于引入了块级作用域,这种情况可以理解成函数在块级作用域内声明,因此不报错,但是构成区块的大括号不能少

// 报错

'use strict';

if (true)

 function f() {}

声明的全局变量不再是window的属性

"use strict";

var a = 1;

console.log(window.a) // 1

let b = 1;

console.log(window.b) // undefined

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map