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