-
JS V.S. ES
JS是一種編程語言,ES是一種標(biāo)準(zhǔn)。JS是實現(xiàn)ES標(biāo)準(zhǔn)的語言。
ES6新特性——const
不允許重復(fù)聲明;
定義的變量不屬于頂層對象window;
不存在變量提升;
暫時性死區(qū);
塊級作用域;
如果const定義的是引用類型,則變量的值可以改變。如果不想改變,使用Object.freeze(obj)凍結(jié)對象(但是這個方法只能淺層凍結(jié),如果對象里面還有對象,則需要自己寫一個遞歸方法去freeze對象)
定義變量優(yōu)先使用const
ES6新特性——箭頭函數(shù)
箭頭函數(shù)里面沒有this,如果用的話會去上級作用域中去找,這時的this指向跟之前的普通函數(shù)中的this指向是不同的;所以,箭頭函數(shù)作為事件的回調(diào)函數(shù),在this的使用上會有一些問題;
同理,定義對象屬性的方法時使用箭頭函數(shù)也會有問題;
不能在箭頭函數(shù)中使用arguments;
不能使用箭頭函數(shù)作為構(gòu)造函數(shù);
不能使用箭頭函數(shù)作為原型下的方法
ES6新特性——解構(gòu)賦值
使用場景:
函數(shù)參數(shù)
函數(shù)返回值
變量互換
JSON應(yīng)用
Ajax請求應(yīng)用
解決ES6兼容問題
BABEL
ES6官網(wǎng)
http://www.ecma-international.org/ecma-262/6.0/
老師總結(jié)電子書:
http://es.xiecheng.live/
查看全部 -
CONST
1、不允許重復(fù)聲明
2、不屬于頂層對象window
3、不存在變量提升
4、暫時性死區(qū)
5、塊級作用域
查看全部 -
const 聲明常量,在一開始就要進(jìn)行初始化;
var聲明的對象屬于頂層對象window,可以通過window.x去訪問(不好,污染全局變量);const聲明的常量則不行
const聲明的代碼,必須先聲明在使用不存在變量提升,這樣更安全;
const特點:不許重復(fù)聲明,不屬于頂層對象window,不存在變量提升,暫時性死區(qū)(先定義后調(diào)用,定義之前的區(qū)域它是死掉的),塊級作用域
查看全部 -
es6學(xué)習(xí)中文網(wǎng)址
查看全部 -
es6轉(zhuǎn)es5方法
查看全部 -
步驟
npm init -y
npm i -D bable-preset-env bable-cli
.bablelrc?
{
????"presets": ["env"]
}
bable src/index.js -o dist/index.js? 文件轉(zhuǎn)化
bable src -d dis? 文件夾轉(zhuǎn)化
bable src -w -d dis?
-o輸出的意思
-d轉(zhuǎn)化
-w監(jiān)控的意思
查看全部 -
在箭頭函數(shù)里其實沒有this,如果當(dāng)前作用域內(nèi)有this,它會沿著當(dāng)前作用域鏈向上層作用域去找
查看全部 -
const 和 let
優(yōu)先用const, 如果值需要被改變則用let;?查看全部 -
在ES3里邊聲明常量(只讀不能改變值)
Object.defineProperty(window,'es',{ ????value:?'es6', ????writable:?false })
查看全部 -
JSON.parse(object);結(jié)果返回一個對象
用于:
函數(shù)參數(shù)
函數(shù)返回值
變量互換
JSON應(yīng)用
Ajax請求應(yīng)用
查看全部 -
解構(gòu)賦值:等號兩邊的類型要一樣
const course={ name:'es6' ,price:500? }
const { name,price} = course; (對象對對象)
const coursearr =['es6,'es7','es8'];
const [a,b,c] = coursearr; (數(shù)組對數(shù)組)
查看全部 -
const a=document.querySelector('#id_name');類似于
var a=document.getElementById('id_name');
給元素綁定事件:a.addEventListener();
把事件的回調(diào)函數(shù)用箭頭函數(shù)寫;
用箭頭函數(shù)去定義對象的方法;
不能使用arguments///console.log(arguments) 能夠取到當(dāng)前方法的形參的值
不能使用箭頭函數(shù)構(gòu)造函數(shù)
箭頭函數(shù)不能定義原型下的方法
查看全部 -
當(dāng)用const聲明引用數(shù)據(jù)類型時比如:聲明一個對象、聲明一個數(shù)組時地址不會改變,改變的是里面的內(nèi)容。
用Object.freeze(對象),可以將對象凍結(jié),使其值不會發(fā)生改變。只能使指定對象凍結(jié),不會影響更深層的值。
Object.keys(對象)返回一個當(dāng)前對象、屬性組成的數(shù)組
封裝一個凍結(jié)函數(shù),使該對象的每一層都能使其值不變:
function myFreeze(obj){
????Object.freeze(obj);
Object.keys(obj).forEach(function(key){
if(typeof obj[key]=='object'){
????????myfreeze(obj[key]);}
}
//聲明常量 const? ?//聲明變量 let? 優(yōu)先使用const,后續(xù)如果要改變值再考慮用let
查看全部 -
const (聲明常量,一開始就得賦值,否則會報錯)
var允許變量重名,const不允許重復(fù)聲明
const聲明的常量不屬于頂層對象window
//變量提升,當(dāng)輸出變量在定義之前,會把后面的定義提在前面,但不賦值
console.log(str);? ? ?=? ? var str;? ? ? ? ? ? ? ? ? ?result: undefined;
var str ='SE6';? ? ? ? ?=? ? console.log(str);
????????????????????????????????????? str ='SE6'
const不存在變量提升。//先去聲明再去使用
暫時性死區(qū)//先定義后調(diào)用
塊級作用域//如果在大括號內(nèi)聲明變量,則該變量只在大括號內(nèi)有效
查看全部 -
babel src -w -d dist 監(jiān)控
查看全部 -
babel src -w -d dist
查看全部 -
學(xué)習(xí)入門第一天就開始
查看全部 -
總結(jié)
查看全部 -
1.箭頭函數(shù)括號中的賦值:給school屬性設(shè)置默認(rèn)值;
2.括號內(nèi)的參數(shù)為解構(gòu)函數(shù)的左部;
?
3.對函數(shù)返回值進(jìn)行解構(gòu);{name,age}為解構(gòu)
4.利用解構(gòu)賦值實現(xiàn)兩個變量互換值
5.對json對象解構(gòu)
查看全部 -
對象中的對象 如何解構(gòu)賦值:
????若二層對象的屬性名字和一層對象的有沖突,則需修改為不同名字
????否則報錯
查看全部 -
定義類中方法:prototype.study等于function() ;es6中模版字符串:反引號定義,變量用${}
查看全部 -
箭頭函數(shù)不能作為構(gòu)造函數(shù)
查看全部 -
箭頭函數(shù)中沒有arguments屬性
查看全部 -
es6中對對象中方法的簡寫形式,不要箭頭函數(shù)不要冒號
查看全部 -
箭頭函數(shù)中沒有this,會沿著作用域鏈向上找,這里找到的是全局變量window,所以報錯。
查看全部
舉報