资讯专栏INFORMATION COLUMN

ECMAScript 6入门读书笔记一

ShowerSun / 743人阅读

摘要:与也是用来声明变量,但是不同于,个人理解是它是用来修复的一些神奇效果,似的变量更加规范,简单来说定义的变量就是私有变量,有以下几点作用声明的变量只在它所在的代码块中生效即它的块级作用域中生效对于循环的块级作用域,当声明循环体时,有两个特点声

let与const let

也是用来声明变量,但是不同于var,个人理解是它是用来修复var的一些神奇效果,似的变量更加规范,简单来说let定义的变量就是私有变量,有以下几点作用

let声明的变量只在它所在的代码块中生效(即它的块级作用域中生效)

if (true) {
    let i;
    console.log(i);
}
//console.log(i);  ReferenceError: i is not defined

对于for循环的块级作用域,当let声明循环体i时,有两个特点

let声明的i外部不能被访问

for (let i = 0; i < 4; i ++) {
        console.log(i);
    }
console.log(i);  //i is not defined

之所以里面能访问i,因为for循环子作用域能访问外部作用

for循环当在子作用域,声明let i时与循环体i是独立的

for (let i = 0; i < 4; i ++) {
        let i = 6;
        console.log(i);
    }

为什么能,简单说就是i私有了

每次循环let都是重新申明的,正因为这样,就能解决for循环时闭包带来的问题

for (let i = 0; i < 4; i ++) {
        setTimeout(function () {console.log(i)}, 100)
    }
//0 1 2 3
for (var i = 0; i < 4; i ++) {
        setTimeout(function () {console.log(i)}, 100)
    }
//4 4 4 4

不存在变量提升,

//console.log(i);
//console.log(typeof i);
let i;

都是会报错的,i is not defined。
对于let声明的变量,typeof 不再是安全形式了,并且该变量必须在声明后才能使用,在它之前使用那就是暂时的死区

function f(x=y,y=2) {};
f(); //y is not defined
let x = x; //x is not defined

同一作用域中也不能重复定义

let i;
let i;  //报错
function f(n) {
    let n
}
f();  //报错

不同作用域可以重复且各自独立

function f(n) {
   {let n}
}

let声明的变量不属于window

let i = 1;
console.log(window.i); //undefined

const作用是用来声明常量

作用和let一样,但多两点

一旦声明必须初始化,也就是必需赋值,否则报错;

const P = 1;

一旦赋值不能被改变,其本质是不能改变变量的内存地址
变量是原始类型的数据,其本身就是不可变的,再加上不能重新赋值,改变地址

const P = 1;
P = 2;   //报错

变量是对象类型的,其本身是可变的,所以也就能改变,要注意的是其地址并不改变

const P = {a : 1} ;
P.a =2;
console.log(P);  //{a : 2}

想要其内容也不变,可以冻结它

const P = {a : 1} ;
Object.freeze(P);
P.a =2;
console.log(P);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98538.html

相关文章

  • ECMAScript 6入门读书笔记

    摘要:变量的解构赋值更加便利的从匿名对象或者数组中,对变量进行赋值数组的解构赋值基本样式,右边数据类型必须是可迭代的类型。 变量的解构赋值 更加便利的从匿名对象或者数组中,对变量进行赋值; 数组的解构赋值 基本样式,右边数据类型必须是可迭代的类型。 let a = 1, b = 2, c = 3; //等价于 //let [a, b, c] = [1, 2, 3]; 对...

    wawor4827 评论0 收藏0
  • ECMAScript 6 入门读书笔记

    摘要:阮一峰老师开源作品。书上的示例代码可以通过在线网站代码调试工具调试。 阮一峰老师开源作品。 书上的示例代码可以通过 在线网站代码调试工具 JS Bin 调试。 作用域 作用域链 每个变量或函数通过执行环境 (execution context) 定义了其有权访问的其他数据,决定了他们各自的行为; 全局执行环境是最顶层的执行环境,根据宿主环境的不同,表示全局执行环境的对象也不同:在浏览...

    qieangel2013 评论0 收藏0
  • 前端补集 - 收藏集 - 掘金

    摘要:原文地址一个非常适合入门学习的博客项目前端掘金一个非常适合入门学习的项目,代码清晰结构合理新闻前端掘金介绍一个由编写的新闻。深入浅出读书笔记知乎专栏前端专栏前端掘金去年的一篇老文章,恰好今天专栏开通,迁移过来。 破解前端面试(80% 应聘者不及格系列):从闭包说起 - 掘金修订说明:发布《80% 应聘者都不及格的 JS 面试题》之后,全网阅读量超过 6W,在知乎、掘金、cnodejs ...

    YorkChen 评论0 收藏0
  • 前端补集 - 收藏集 - 掘金

    摘要:原文地址一个非常适合入门学习的博客项目前端掘金一个非常适合入门学习的项目,代码清晰结构合理新闻前端掘金介绍一个由编写的新闻。深入浅出读书笔记知乎专栏前端专栏前端掘金去年的一篇老文章,恰好今天专栏开通,迁移过来。 破解前端面试(80% 应聘者不及格系列):从闭包说起 - 掘金修订说明:发布《80% 应聘者都不及格的 JS 面试题》之后,全网阅读量超过 6W,在知乎、掘金、cnodejs ...

    AbnerMing 评论0 收藏0
  • 《JavaScript 权威指南》读书笔记 1 - 简介

    摘要:原文第一章主要介绍的大概情况基本语法。通过和来引用对象属性或数组元素的值就构成一个表达式。 原文:https://keelii.github.io/2016/06/16/javascript-definitive-guide-note-0/ 第一章 主要介绍 JavaScript 的大概情况、基本语法。之前没有 JavaScript 基础的看不懂也没关系,后续章节会有进一步的详细说明...

    sydMobile 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<