一、塊級(jí)作用域 1. var
首先看看ES5中得變量聲明方式
if (true) { var a = 2 } console.log(a) // 2
以上代碼等同于
var a if (true) { a = 2 } console.log(a)
2.let 和 const以上可知 :
在塊內(nèi)部定義變量 變量提升,到函數(shù)最頂部
通過var聲明的變量,無(wú)論在何處聲明,均為全局作用域
再來(lái)看看ES6中的let和const
letif (true) { let b = 2 } console.log(b) // b is not defined
此時(shí)在{} 外部訪問b 將會(huì)報(bào)錯(cuò),因?yàn)?let 的作用域僅為 { } 的內(nèi)部,及塊級(jí)作用域const
if (true) { const c = 2 } console.log(c) // c is not defined
從上面可知 const 也是也僅為塊級(jí)作用域const的作用域與let作用域相同:只在聲明所在的塊級(jí)作用域內(nèi)有效
讓我們看看const 更多的特性:
const 表示常量:
const d = 2 d = 3 // Assignment to constant variable.
此時(shí),當(dāng) d 為 基本數(shù)據(jù)類型的時(shí)候,改變其值,將會(huì)報(bào)錯(cuò)!??!
但是它的常量?jī)H僅表示的是地址常量 對(duì)象的成員可以改變值
看看下面的例子:
const people = {name: "張三", age: 23} people.age = 25 console.log(people) // {name: "張三", age: 25}
看看此時(shí) people已經(jīng)被改變了
why?
對(duì)象是復(fù)雜的數(shù)據(jù)類型 它的地址保存在 棧里面, 值保存在堆里面二、字符串 1. 字符串拼接 ES5中字符串拼接cosnt僅僅是保證這個(gè)地址不改變,至于地址對(duì)應(yīng)的數(shù)據(jù),是可以進(jìn)行改變的
基本類型值在內(nèi)存中占據(jù)固定大小的空間 因此被保存在棧內(nèi)存中。比如 const a = 1 ; 這時(shí)候其直接保存在棧里面
// ES5 var name = "Hunter" console.log("hello " + name)ES6中字符串拼接
// ES6 let name = "Hunter" console.log(`hello ${name}`) // hello Hunter
注意:用 ${}來(lái)拼接字符串,注意此時(shí)要使用 ` `(反單引號(hào)); 如下所示: 單引號(hào)將無(wú)法將其轉(zhuǎn)義
console.log("hello ${name}") // hello ${name}ES6的字符串換行
// ES5 var template = "hello world" // ES6 let template2 = `hello world`
ES5中需要用反斜杠來(lái)進(jìn)行多行字符串拼接,ES6直接使用 ` `(反單引號(hào))2. 字符串方法 padStart() 和 padEnd()
ES6 引入了字符串補(bǔ)全長(zhǎng)度的功能,如果某個(gè)字符串不夠指定長(zhǎng)度,會(huì)在頭部或者尾部補(bǔ)全。padStart() 用于頭部補(bǔ)全;
padEnd() 用于尾部補(bǔ)全。
如下一個(gè)例子:例子來(lái)源
setInterval(() => { const now = new Date() const hours = now.getHours().toString() const minutes = now.getMinutes().toString() const seconds = now.getSeconds().toString() console.log(`${hours.padStart(2, 0)}:${minutes.padStart(2, 0)}:${seconds.padStart(2, 0)}`) }, 1000)
先不管箭頭函數(shù)
看看其中的hours.padStart(2,0) , 表示當(dāng)小時(shí)不夠兩位數(shù)時(shí),在前面補(bǔ)0,如8,補(bǔ)充成 08
后面遇到更多的字符串函數(shù)會(huì)補(bǔ)充
三、變量的解構(gòu)賦值// ES5 let a = 1; let b = 2; let c = 3;?1.ES6數(shù)組解構(gòu)賦值
let [a,b,c] = [1,2,3]; console.log(`${a} $ ${c}`) // 1 2 3默認(rèn)值?
let [d = 2, e] = [undefined, 3]; console.log(`$qoyqs8suu2u ${e}`) // 2 3
當(dāng)賦值為undefined時(shí)取默認(rèn)值 當(dāng)賦值為其他的有效值或者null時(shí) 取所賦值的值
let [f = 2, g = 3] = [null, 4]; console.log(`${f} ${g}`) // null 42.對(duì)象解構(gòu)賦值
數(shù)組按照順序解構(gòu) 對(duì)象按照key值進(jìn)行解構(gòu)
let {foo, bar} = {foo: "hi", bar: "hello"} //可以調(diào)換位置 console.log(`${foo} ${bar}`) *// hi hello
注意:先定義再解構(gòu)需要在解構(gòu)語(yǔ)句那塊加上圓括號(hào)
let soso; // { soso } = { soso: "hi"}; // 錯(cuò)誤 ({ soso } = { soso: "hi"}); //得加上圓括號(hào) () console.log(soso) // hi3.字符串的解構(gòu)賦值
const [h,i,j,k,l] = "hello"; console.log(`${h} ${i} ${j} ${k} ${l}`)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/103575.html
摘要:在繼承的構(gòu)造函數(shù)中,我們必須如上面的例子那么調(diào)用一次方法,它表示構(gòu)造函數(shù)的繼承,與中利用繼承構(gòu)造函數(shù)是一樣的功能。 showImg(https://segmentfault.com/img/remote/1460000009078532); 在實(shí)際開發(fā)中,ES6已經(jīng)非常普及了。掌握ES6的知識(shí)變成了一種必須。盡管我們?cè)谑褂脮r(shí)仍然需要經(jīng)過babel編譯。 ES6徹底改變了前端的編碼風(fēng)格,...
摘要:下載地址安裝一個(gè)好用的命令行工具在環(huán)境下,系統(tǒng)默認(rèn)的非常難用,所以我個(gè)人比較推薦大家使用或者。下載地址安裝在命令行工具中使用查看版本的方式確保與都安裝好之后,我們就可以安裝了。前端基礎(chǔ)進(jìn)階系列目錄 showImg(https://segmentfault.com/img/remote/1460000009654403?w=1240&h=272); 對(duì)于新人朋友來(lái)說(shuō),想要自己去搞定一個(gè)E...
摘要:彩票項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí)記錄一完整走了一遍課程,覺得還不錯(cuò)。支持正版人人有責(zé)零基礎(chǔ)教學(xué)解析彩票項(xiàng)目下面是項(xiàng)目課程的目錄路線一個(gè)項(xiàng)目分為三部分業(yè)務(wù)邏輯,自動(dòng)構(gòu)建系統(tǒng),模擬數(shù)據(jù)和真實(shí)數(shù)據(jù)接口處理。 彩票項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí)記錄(一) 完整走了一遍課程,覺得還不錯(cuò)。 總結(jié): es6的知識(shí)點(diǎn)說(shuō)得還算清楚,主要是為了了解和使用,不是深究,所以淺嘗即止即可,所以覺得還不錯(cuò)。 完整還原了項(xiàng)目開發(fā)的代碼設(shè)計(jì)和開發(fā)過...
摘要:概述在中,對(duì)象字面量的語(yǔ)法被增強(qiáng)了更短的屬性聲明如果屬性的屬性名和屬性值引用的變量名一致,可以直接省略之前更短的函數(shù)聲明如果屬性的屬性名和屬性值函數(shù)的函數(shù)名一致或者屬性值函數(shù)沒有函數(shù)名,可以省略關(guān)鍵字和屬性名之前可動(dòng)態(tài)計(jì)算的屬性名屬性名可以 0x000 概述 在es6中,對(duì)象字面量的語(yǔ)法被增強(qiáng)了 0x001 更短的屬性聲明 如果屬性的屬性名和屬性值引用的變量名一致,可以直接省略 let...
摘要:關(guān)于的入門了解新增模板字符串為提供了簡(jiǎn)單的字符串插值功能箭頭函數(shù)操作符左邊為輸入的參數(shù),而右邊則是進(jìn)行的操作以及返回的值。將對(duì)象納入規(guī)范,提供了原生的對(duì)象。增加了和命令,用來(lái)聲明變量。 關(guān)于ES6的入門了解 新增模板字符串(為JavaScript提供了簡(jiǎn)單的字符串插值功能)、箭頭函數(shù)(操作符左邊為輸入的參數(shù),而右邊則是進(jìn)行的操作以及返回的值Inputs=>outputs。)、for-o...
閱讀 1164·2021-11-24 09:39
閱讀 3631·2021-09-02 15:21
閱讀 2172·2021-08-24 10:01
閱讀 733·2021-08-19 10:55
閱讀 2457·2019-08-30 15:55
閱讀 1218·2019-08-30 14:16
閱讀 3001·2019-08-29 15:17
閱讀 3242·2019-08-29 13:53