本文小編為大家詳細(xì)介紹“es6語(yǔ)法是不是一種標(biāo)準(zhǔn)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“es6語(yǔ)法是不是一種標(biāo)準(zhǔn)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。
成都創(chuàng)新互聯(lián)是專業(yè)的隆回網(wǎng)站建設(shè)公司,隆回接單;提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行隆回網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
es6語(yǔ)法是一種標(biāo)準(zhǔn)。ES6全稱是ECMAScript 6,是正式發(fā)布的JavaScript語(yǔ)言的一種標(biāo)準(zhǔn),該標(biāo)準(zhǔn)的目標(biāo)是使得JavaScript語(yǔ)言可以用來編寫復(fù)雜的大型應(yīng)用程序,成為企業(yè)級(jí)開發(fā)語(yǔ)言。ECMAScript和JavaScript的關(guān)系是:前者是后者的規(guī)格,后者是前者的一種實(shí)現(xiàn)。
ES6全稱是ECMAScript 6,是正式發(fā)布的JavaScript語(yǔ)言的一種標(biāo)準(zhǔn),該標(biāo)準(zhǔn)的目標(biāo)是使得JavaScript語(yǔ)言可以用來編寫復(fù)雜的大型應(yīng)用程序,成為企業(yè)級(jí)開發(fā)語(yǔ)言。
ES6是繼ES5之后發(fā)布的JavaScript語(yǔ)言的新一代標(biāo)準(zhǔn),加入了很多新的特性和語(yǔ)法,該標(biāo)準(zhǔn)于2015年6月17日發(fā)布了正式版本,并被正式命名為ES2015。
ECMAScript 和 JavaScript 的關(guān)系是,前者是后者的規(guī)格,后者是前者的一種實(shí)現(xiàn)(另外的 ECMAScript 方言還有 JScript 和 ActionScript)
2011 年,ECMAScript 5.1 版發(fā)布后,就開始制定 6.0 版了。因此,ES6 這個(gè)詞的原意,就是指 JavaScript 語(yǔ)言的下一個(gè)版本。 ES6 的第一個(gè)版本,在 2015 年 6 月發(fā)布,正式名稱是《ECMAScript 2015 標(biāo)準(zhǔn)》(簡(jiǎn)稱 ES2015)。 2016 年 6 月,小幅修訂的《ECMAScript 2016 標(biāo)準(zhǔn)》(簡(jiǎn)稱 ES2016)如期發(fā)布,這個(gè)版本可以看作是 ES6.1 版,因?yàn)閮烧叩牟町惙浅P?,基本上是同一個(gè)標(biāo)準(zhǔn)。根據(jù)計(jì)劃,2017 年 6 月發(fā)布 ES2017 標(biāo)準(zhǔn)。
因此,ES6 既是一個(gè)歷史名詞,也是一個(gè)泛指,含義是 5.1 版以后的 JavaScript 的下一代標(biāo)準(zhǔn),涵蓋了 ES2015、ES2016、ES2017 等等,而 ES2015 則是正式名稱,特指該年發(fā)布的正式版本的語(yǔ)言標(biāo)準(zhǔn)。我 們說 ES6 的地方,一般是指 ES2015 標(biāo)準(zhǔn),但有時(shí)也是泛指“下一代 JavaScript 語(yǔ)言”。
塊作用域存在于:函數(shù)內(nèi)部、塊中(即:字符 “ { ” 與 “ } ” 之間的區(qū)域)
1.let聲明
通過var聲明的變量存在變量提升機(jī)制,而let聲明的變量不會(huì)被提升,可將變量的作用域限制在當(dāng)前代碼塊中
//通過var聲明的變量
//函數(shù)內(nèi)部
function changeState(flag) {
if (flag) {
var color = "red"
} else {
console.log(color);
return null;
}
}
changeState(false);
//塊中
{
var a = 1;
}
console.log("a=" + a);
//for循環(huán)中
for (var i = 0; i < 10; i++) {}
console.log("i=" + i);
//通過let聲明的變量
//函數(shù)內(nèi)部
function changeState(flag) {
if (flag) {
let color = "red"
} else {
console.log(color);
return null;
}
}
changeState(false);
//塊中
{
let a = 1;
}
console.log("a=" + a);
//for循環(huán)中
for (let i = 0; i < 10; i++) {}
console.log("i=" + i);
在同一作用域下,不能使用let重復(fù)聲明已經(jīng)存在的標(biāo)識(shí)符,但如果在不同的作用域下,則是可以的。
// 在同一作用域下,不能使用let重復(fù)聲明已經(jīng)存在的標(biāo)識(shí)符,但如果在不同的作用域下,則是可以的
var a=0;
var b=0;
{
let a=0;
}
let b=0;
使用let聲明變量,可以防止變量的重復(fù)聲明
var a=0;
var a=10;//ok
var b=1
let b=100;
2.const聲明
每個(gè)通過const關(guān)鍵字聲明的變量必須在聲明的同時(shí)進(jìn)行初始化
在同一作用域下用const聲明已經(jīng)存在的標(biāo)識(shí)符也會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤
使用const聲明對(duì)象,對(duì)象本身的綁定不能修改,但對(duì)象的屬性和值是可以修改的
const person={
name:"zhangSan"
};
person.name="lisi"; //ok
person.age=19; //ok
person={
name:"wangwu"
};
在全局作用域中使用var聲明的變量或?qū)ο?,將作為瀏覽器環(huán)境中的window對(duì)象的屬性(使用var很可能會(huì)無(wú)意中覆蓋一個(gè)已經(jīng)存在的全局屬性)
var greeting="welcome";
console.log(window.greeting);
console.log(window.Screen);
var Screen="liquid crystal";
console.log(window.Screen);
使用let或const聲明變量和常量,避免覆蓋window對(duì)象的屬性
let greeting="welcome";
console.log(window.greeting);
console.log(window.Screen);
const Screen="liquid crystal";
console.log(window.Screen==Screen);
總結(jié)
通過var聲明的變量存在變量提升機(jī)制,而let聲明的變量不會(huì)被提升,可將變量的作用域限制在當(dāng)前代碼塊中
在同一作用域下,不能使用let重復(fù)聲明已經(jīng)存在的標(biāo)識(shí)符,但如果在不同的作用域下,則是可以的
使用let聲明變量,可以防止變量的重復(fù)聲明
每個(gè)通過const關(guān)鍵字聲明的變量必須在聲明的同時(shí)進(jìn)行初始化
在同一作用域下用const聲明已經(jīng)存在的標(biāo)識(shí)符也會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤
使用const聲明對(duì)象,對(duì)象本身的綁定不能修改,但對(duì)象的屬性和值是可以修改的
在全局作用域中使用var聲明的變量或?qū)ο?,將作為瀏覽器環(huán)境中的window對(duì)象的屬性(使用var很可能會(huì)無(wú)意中覆蓋一個(gè)已經(jīng)存在的全局屬性)
使用let或const聲明變量和常量,避免覆蓋window對(duì)象的屬性
二、解構(gòu)賦值
解構(gòu)賦值是對(duì)賦值運(yùn)算符的擴(kuò)展。
他是一種針對(duì)數(shù)組或者對(duì)象進(jìn)行模式匹配,然后對(duì)其中的變量進(jìn)行賦值。
在代碼書寫上簡(jiǎn)潔且易讀,語(yǔ)義更加清晰明了;
也方便了復(fù)雜對(duì)象中數(shù)據(jù)字段獲取。
//1、數(shù)組解構(gòu)
// 傳統(tǒng)
let a = 1, b = 2, c = 3
console.log(a, b, c)
// ES6
let [x, y, z] = [1, 2, 3]
console.log(x, y, z)
/*********************************************************************************************************/
/*********************************************************************************************************/
//2、對(duì)象解構(gòu)
let user = {name: 'Johon', age: 18}
// 傳統(tǒng)
let name1 = user.name
let age1 = user.age
console.log(name1, age1)
// ES6
let { name, age } = user//注意:解構(gòu)的變量必須和user中的屬性同名
console.log(name, age)
三、模板字符串
模板字符串相當(dāng)于加強(qiáng)版的字符串,用反引號(hào) `,除了作為普通字符串,還可以用來定義多行字符串,
還可以在字符串中加入變量和表達(dá)式。
// 字符串插入變量和表達(dá)式。變量名寫在 ${} 中,${} 中可以放入 JavaScript 表達(dá)式。
let name = 'Kuangshen'
let age = 27
let info = `My Name is ${name},I am ${age+1} years old next year.`
console.log(info)
// My Name is Kuangshen,I am 28 years old next year.
四、聲明對(duì)象簡(jiǎn)寫
const age = 12
const name = '小王'
// 傳統(tǒng)
const person1 = {age: age, name: name}
console.log(person1)
// ES6
const person2 = {age, name}
console.log(person2) //{age: 12, name: '小王'}
五、定義方法簡(jiǎn)寫
// 傳統(tǒng)
const person1 = {
sayHi:function(){
console.log('Hi')
}
}
person1.sayHi();//'Hi'
// ES6
const person2 = {
sayHi(){
console.log('Hi')
}
}
person2.sayHi() //'Hi'
六、對(duì)象拓展運(yùn)算符
符號(hào) (...)
let person = {nameL:"oAk",age:23}
let someone1 = persion // 引用賦值
let someone2 = { ...person } // 對(duì)象拷貝
someone1.name = 'oAk_OLD'
someone2.name = 'oAk_NEW'
console.log(persion) // {name:'oAk_OLD', age:23}
console.log(someone1) // {name:'oAk_OLD', age:23}
console.log(someone2) // {name:'oAk_NEW', age:23}
讀到這里,這篇“es6語(yǔ)法是不是一種標(biāo)準(zhǔn)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。