Javascript的坑(一)---------- block statement scope

在ECMAScript 6之前,Javascript是没有block statement scope的.....

这就导致了诡异的现象,比如下面的代码

var x = 1;
{
  var y = 2;
}
console.log(y); // outputs 2

简直神奇.....

现在有了ECMAScript 6,代码就可以这样写

var x = 1;
{
  let y = 2;
}
console.log(y); // ReferenceError: y is not defined

嗯,这样就可以愉快地玩耍了....

时间: 2024-08-06 07:58:56

Javascript的坑(一)---------- block statement scope的相关文章

Block statement

The most basic statement is a block statement that is used to group statements. The block is delimited by a pair of curly brackets: { statement_1; statement_2; . . . statement_n; } Example Block statements are commonly used with control flow statemen

重读 Axel 的 Javascript 中的 Expression vs Statement 一文

原文引用https://www.dazhuanlan.com/2019/08/26/5d62fe2fe3190/ 原文在此,对于 Axel 的文章一直有种虽然短却难以读透的感觉.这篇文章是再读一次的翻译搭配自己的理解说明,如有错误欢迎指教. 注: 下面一些范例当我们在浏览器 console 执行时,回传值与程序执行的顺序在 Chrome 与 Firefox 会有差别.注意一下箭头符号就知道哪个是 return 了.例如 12345678910 > function () {console.log

JavaScript避坑

1, js运算精度问题=> 1 输入>0.1+0.2==0.3 2 返回>false 3 4 输入>0.1+0.2 5 返回>0.30000000000000004 支招: 思路很简单,先赋给个变量,用toFixed(保留小数位);函数四舍五入,但是这样还不够,如果处理的值还需要参与运算的话,需要用Number(值/变量);函数转换为数字类型 1 输入>var num=0.1+0.2; 2 输入>var num2=num.toFixed(2); 3 输入>n

JavaScript的坑,缺陷

JavaScript的缺陷 1.在做判断的时候用=======而不是== 2.浮点预算有精度问题 通过差值去把这个精度锁定到一个范围 Math. Abs(A-B)<0.0001** 3.null和undefined null:表示当前值为空 undefined:主要用来判断函数参数是否传递 原文地址:https://www.cnblogs.com/heihaquyu/p/JavaScript_bad.html

javascript的坑

1 for in循环:使用它时,要主要遍历的是所有可枚举的属性(实例以及原型中的属性) function Person(name){ this.name = name; } Person.prototype.getName=function(){ return this.name; } var p = new Person('mengxb'); for(prop in p) { //此时会遍历到原型上的getName,如果不想遍历原型上的属性和方法,可以用hasOwnProperty() if(

Variable scope

When you declare a variable outside of any function, it is called a global variable, because it is available to any other code in the current document. When you declare a variable within a function, it is called a local variable, because it is availa

javascript block

概览 语句块 (或其他语言中的 复合语句) 用来组织零个或多条语句. 用一对花括号界定语句块. 语法 { statement_1; statement_2; ... statement_n; } statement_1, statement_2, statement_n 语句都包裹在语句块中. 说明 语句块通常在流程控制语句 (如 if, for, while)中使用.如: while (x < 10) { x++; } 注意语句块不是以分号结尾. 其他语言中通常将语句块称为 复合语句. 语句块

JavaScript的赋值深坑

以前学C++的时候(大学时代),对传参时印象深刻的是,传的值是值还是值的地址. 之后学JavaScript的时候,发现不用理会那么多,虽然不严谨,但是用起来很便捷,比如说类型转换呀,啥的简单多了..... 可是最近几天就遇到了坑... 先上代码: []===[]  // false []==[]   // false 上面的代码是用来判断是否为空数组用的.不巧的是,结果如大家看到的,起初我以为是JavaScript的bug,也就不以为然.因为JavaScript的坑还是挺多了,而且之前也有大概的

你一直想知道的关于JavaScript scope的一切

对于一个JavaScript初学者(甚至是有经验的JavaScript开发者)而言,JavaScript语言中关于"域"(scope)的一些概念并不是那么直白或是容易理解的. 由此,这篇文章旨在帮助那些在听说过诸如域(scope),闭包(closure),关键字this,命名空间(namespace),函数域(function scope),全局域(global scope),词法作用域(lexical scope)以及公共域和私有域(public/private scope)等词汇后