首页 > 编程语言 >Javascript(笔记32) - ES6特性 - let

Javascript(笔记32) - ES6特性 - let

时间:2022-11-12 23:33:06浏览次数:74  
标签:ES6 console log song 作用域 32 Javascript let var

Javascript(笔记32) - ES6

ECMA 

European Computer Manufactureres Association ,中文名:欧洲计算机制造商协会,目标是评估、开发和认可电信和计算机标准。1994年后改名为 ECMA国际;

就理解为“标准化”组织吧。


ECMAScript

就是这个组织通过 ECMA-262 标准化的脚本程序设计语言;

ES6是相对于 ECMA2015 年的版本,而且每年都要搞一个。

TC39是推进 ECMAScript 发展的委员会,会员都是浏览器厂商,苹果、谷歌、微软、因特尔这些,定期开会;


为啥学ES6

老一代的经典版本,不能满足要求了,新一代的版本中以 ES6 最为代表性。

后面还有  ES7、8、9、10、11  每年都有个新版本,只是标准都提前制定了,各浏览器厂商要支持新的版本,还需要时间;大部分浏览器对ES6都有很好的兼容;

兼容性: ​​https://kangax.github.io/compat-table/es6/​

我现在用的是 chrome 107,已经全面支持ES6。


let变量声明

变量声明:一个也行,多个也行,各种数据类型都行;

let a; 
let b,c,d;
let f = 123, g = 'iloveyou',h =[];

特性1:变量不能重复声明:重复声明就报错;

let name = 'Jack';
let name = 'Tom';

Javascript(笔记32) - ES6特性 - let _ES6

语法错误:标识符 name 已经被声明了;

var 可以重复声明,但也会污染变量,不演示了,都懂;

特性2:块级作用域:全局,函数,eval

{
let girl = 'xiaowu';
// console.log(girl); 在块级作用域里可以用;
}
console.log(girl);

Javascript(笔记32) - ES6特性 - let _javascript_02

引用错误:girl 未定义;

var 就可以正确读取,因为 var 没有块级作用域,属于 window 了,所以可以用;

注意:if else 和 for 里面的 {} 也都是块级作用域;

特性3:不存在变量提升

console.log(song);
let song = "孤勇者";
// console.log(song); 声明后使用;

Javascript(笔记32) - ES6特性 - let _javascript_03

引用错误:初始化之前,不让用;

var 有变量提升,不报错,会输出 undefined ; 

var song  
console.log(song); // undefined
song = "孤勇者";
console.log(song); // 孤勇者

特性4:不影响作用域链

{
let name = "Jack";
function fn(){
console.log(name);
}
fn(); // Jack
}

fn 函数里没有 name ,会向作用域链上级找,这里是正常输出;

练习:

<style>
div {
display: inline-block;
margin: 0 4px;
width: 100px;
height: 50px;
border: 2px solid #CAE5E6;
}
</style>

<div class="item"></div>
<div class="item"></div>
<div class="item"></div>

<script>
// 获取 div 元素
let item = document.getElementsByClassName('item');
for (let i = 0; i < item.length; i++) {
item[i].onclick = function () {
// 修改当前元素的背景颜色
item[i].style.backgroundColor = 'pink';
console.log(i); // 1 控制台返回当前块级作用域 i 值;
}
}
</script>

Javascript(笔记32) - ES6特性 - let _javascript_04

var 没有块级作用域,在循环结束后 i = 3 了,如果 i 用 var 声明,这里会报错,都懂;





标签:ES6,console,log,song,作用域,32,Javascript,let,var
From: https://blog.51cto.com/ahuiok/5846840

相关文章