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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javascript
, 作用域
let
在此作用域中尚未声明、声明css作用域、变量声明及作用域、javascript作用域链、javascript作用域,以便于您获取更多的相关知识。

时间: 2024-10-10 04:33:35

JavaScript中用let语句声明作用域的用法讲解_基础知识的相关文章

JavaScript中用getDate()方法返回指定日期的教程_基础知识

 按照本地时间的javascript date.getDate()方法返回月份的一天,在指定日期.由getDate返回的值是1到31之间的整数.语法 Date.getDate() 下面是参数的详细信息:     NA 返回值: 返回今天的日期和时间例子: <html> <head> <title>JavaScript getDate Method</title> </head> <body> <script type="

在JavaScript中用getMinutes()方法返回指定的分时刻_基础知识

 javascript Date.getMinutes()方法按照本地时间在指定日期返回分钟.通过getMinutes返回的值是0到59之间的一个整数.语法 Date.getMinutes() 下面是参数的详细信息:     NA 返回值: 在指定的日期,按照本地时间返回分钟.例子: <html> <head> <title>JavaScript getMinutes Method</title> </head> <body> <

JavaScript中用于四舍五入的Math.round()方法讲解_基础知识

 此方法返回一个数四舍五入为最接近的整数的值.语法 Math.round( x ) ; 下面是参数的详细信息:     x: 一个数字 返回值: 返回数字四舍五入为最接近的整数的值. 例子: <html> <head> <title>JavaScript Math round() Method</title> </head> <body> <script type="text/javascript">

JavaScript中将数组进行合并的基本方法讲解_基础知识

这里简单地讲两种方法: 第一种   var mergeTo = [4,5,6], mergeFrom = [7,8,9]; mergeTo = mergeTo.concat(mergeFrom); mergeTo; // is: [4, 5, 6, 7, 8, 9]   or   var a = [1,2], b = [3,4], c = a.concat(b);   第二种  var mergeTo = [4,5,6], var mergeFrom = [7,8,9]; Array.proto

整理的比较不错的JavaScript的方法和技巧第1/3页_基础知识

适合阅读范围:对JavaScript一无所知-离精通只差一步之遥的人 基础知识:HTML JavaScript就这么回事1:基础知识  1 创建脚本块 1: <script language="JavaScript"> 2: JavaScript code goes here 3: </script>  2 隐藏脚本代码 1: <script language="JavaScript"> 2: <!-- 3: documen

Javascript中eval函数的使用方法与示例_基础知识

定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. 返回值 通过计算 string 得到的值(如果有的话). 说明 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回.因此请不要为 eval() 函数传递 String 对象来作为参数. 如果试图覆盖 eval

JavaScript脚本语言在网页中的简单应用_基础知识

一.JavaScript脚本语言的特性  JavaScript脚本语言是一种面向浏览器的网页脚本编程语言.脚本语言有以下几个特性:  1.在客户端执行.完全在用户的计算机上运行,无须经过服务器.  2.面向对象.具有内置对象,也可以直接操作浏览器对象.  3.动态变化.可以对用户的输入作出反应,也可以直接对用户输出.  4.简单易用.JavaScript脚本语言虽然简单,但初学者也能快速掌握.  5.只能与HTML语言一起使用.要通过浏览器解释执行. 二.如何在HTML中加入JavaScript

探讨JavaScript中的Rest参数和参数默认值_基础知识

Rest 参数 通常,我们需要创建一个可变参数的函数,可变参数是指函数可以接受任意数量的参数.例如,String.prototype.concat 可以接受任何数量的字符串作为参数.使用 Rest 参数,ES6 为我们提供一种新的方式来创建可变参数的函数. 我们来实现一个示例函数 containsAll,用于检查一个字符串中是否包含某些子字符串.例如,containsAll("banana", "b", "nan") 将返回true,contai

JavaScript编程的单例设计模讲解_基础知识

在Javascript中,单例模式是一种最基本又经常用到的设计模式,可能在不经意间就用到了单例模式. 本文将从最基础的理论开始,讲述单例模式的基本概念和实现,最后用一个例子来讲述单例模式的应用. 理论基础 概念 单例模式,顾名思义就是只有一个实例存在.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 基本结构 最简单的单例模式起始就是一个对象字面量,它将有关联的属性和方