成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

es6中 var let const區(qū)別

劉永祥 / 3251人閱讀

摘要:我認(rèn)為這樣是可行的主要是通過(guò)設(shè)置變量的可寫(xiě)屬性為報(bào)錯(cuò)不報(bào)錯(cuò)通過(guò)以上兩個(gè)例子發(fā)現(xiàn)這種實(shí)現(xiàn)應(yīng)該是可以的

由一道面試題引發(fā)的思考~~如何用es5實(shí)現(xiàn)es6中類似const的效果?

var:有變量提升,提升到當(dāng)前作用域的最前

let:
(1)let不會(huì)有變量提升:且let申明的變量在塊級(jí)作用域中存在暫時(shí)性死區(qū) (暫時(shí)性死區(qū):在塊級(jí)作用域中,從塊級(jí)的頂部到變量申明之前,這一區(qū)域是不允許使用該變量的,否則報(bào)錯(cuò),即使是typeof)
(2)全局變量不再屬于window對(duì)象:在全局let聲明的變量不再屬于頂層對(duì)象(window)
即 let a=1;console.log(window.a)//undefined
(3)let變量不能重復(fù)聲明,無(wú)論是var let 或let let 或let var 都不行的呀~~

const: 聲明一個(gè)常量,且聲明時(shí)必須賦值,const特性同let,而且這個(gè)常量是不能改變的
注意:如果const常量對(duì)應(yīng)的是一個(gè)對(duì)象,則不能對(duì)常量重新賦值,但是可以改變這個(gè)對(duì)象的屬性~~

例1:const a=1;a=2;//報(bào)錯(cuò)
例2:consot aa={};aa=2;//報(bào)錯(cuò)        
例3:const aaa={};aaa.b=1;//不報(bào)錯(cuò)    

面試題:用es5實(shí)現(xiàn)類似const效果。我認(rèn)為這樣是可行的: 主要是通過(guò)defineProperty設(shè)置變量的可寫(xiě)屬性為false
"use strict"; Object.defineProperty(this,"x",{value:1,writeable:false});
this.x=1; //報(bào)錯(cuò)
console.log(x);

"use strict";
Object.defineProperty(this,"x",{value:{},writeable:false});
this.x.a=1; //不報(bào)錯(cuò)
console.log(x); //{a:1}

通過(guò)以上兩個(gè)例子發(fā)現(xiàn)這種實(shí)現(xiàn)應(yīng)該是可以的~~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91964.html

相關(guān)文章

  • 總結(jié)下var、letconst區(qū)別

    摘要:前言和的區(qū)別是老生常談,看到網(wǎng)上一些文章的總結(jié),有的不太全面,甚至有的描述不太準(zhǔn)確,在這里盡量全面的總結(jié)下這三者的區(qū)別。最后以上大概是總結(jié)后的內(nèi)容,看來(lái),還是多用吧。 前言 var 和 let 的區(qū)別是老生常談,看到網(wǎng)上一些文章的總結(jié),有的不太全面,甚至有的描述不太準(zhǔn)確,在這里盡量全面的總結(jié)下這三者的區(qū)別。 let 是 ES6新增的變量類型,用來(lái)代替 var 的一些缺陷,跟 var...

    pingink 評(píng)論0 收藏0
  • var let const 區(qū)別

    摘要:區(qū)別標(biāo)簽空格分隔規(guī)范新增了兩種變量聲明方式,雖然在項(xiàng)目中也經(jīng)常用到和但是和到底有什么區(qū)別,今天做下總結(jié)。不允許重復(fù)聲明不允許在相同作用域內(nèi),重復(fù)聲明同一個(gè)變量。 var let const 區(qū)別 標(biāo)簽(空格分隔): ES6 ES6規(guī)范新增了let、const兩種變量聲明方式,雖然在項(xiàng)目中也經(jīng)常用到let和const但是和var到底有什么區(qū)別,今天做下總結(jié)。 1、let 聲明的變量只在...

    Ververica 評(píng)論0 收藏0
  • ES6系列之 letconst

    摘要:聲明的變量不得改變值,這意味著,一旦聲明變量,就必須立即初始化,不能留到以后賦值。這在語(yǔ)法上,稱為暫時(shí)性死區(qū),簡(jiǎn)稱。這表明函數(shù)內(nèi)部的變量與循環(huán)變量不在同一個(gè)作用域,有各自單獨(dú)的作用域。系列文章系列文章地址 showImg(https://segmentfault.com/img/bVbrjjC); 為什么需要塊級(jí)作用域 ES5 只有全局作用域和函數(shù)作用域,沒(méi)有塊級(jí)作用域,這帶來(lái)很多不合...

    libxd 評(píng)論0 收藏0
  • 字面量、變量、常量 let const的理解

    摘要:常量與字面量的區(qū)別常量與字面量均不會(huì)被改變。常量為存儲(chǔ)數(shù)據(jù)的容器,而字面量為等號(hào)右側(cè)的值,字面量是由字符串,數(shù)字等構(gòu)成的字符串或數(shù)值。在中,標(biāo)識(shí)符用于命名變量以及關(guān)鍵詞函數(shù)和標(biāo)簽。 之前竟然對(duì)常量、字面量都沒(méi)有搞清楚,要學(xué)習(xí)的真的是好的 剛才終于搞清楚了 是該好好在學(xué)一遍js的 字面量:在編程語(yǔ)言中,一般固定值稱為字面量,如 3.14。 不是一種值,而是一種變量記法 ...

    gplane 評(píng)論0 收藏0
  • ES6精解:letconst、塊級(jí)作用域

    摘要:命令新增了命令,跟類似,都是用來(lái)聲明變量的不允許重復(fù)聲明報(bào)錯(cuò)不存在變量提升報(bào)錯(cuò)正確寫(xiě)法為既要先定義,后面才能有這個(gè)值,否則會(huì)報(bào)錯(cuò),如果改成會(huì)提示未定義,但是就直接報(bào)錯(cuò)了暫時(shí)性死區(qū)只要在塊級(jí)作用域里面存在則它所聲明的變量就綁定在這個(gè)塊級(jí)作用域 let命令 ES6新增了let命令,跟var類似,都是用來(lái)聲明變量的 1.不允許重復(fù)聲明 { let a = 1; let a =...

    BWrong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

劉永祥

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<