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

資訊專欄INFORMATION COLUMN

ES6入門筆記(二)

godlong_X / 1800人閱讀

摘要:入門筆記二對(duì)字符串操作的擴(kuò)展傳統(tǒng)上,只有方法,可以用來(lái)確定一個(gè)字符串是否包含在另一個(gè)字符串中。返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。用于頭部補(bǔ)全,用于尾部補(bǔ)全。模板字符串中嵌入變量,需要將變量名寫在之中。

ES6入門筆記(二) ES6對(duì)字符串操作的擴(kuò)展

傳統(tǒng)上,JavaScript只有indexOf方法,可以用來(lái)確定一個(gè)字符串是否包含在另一個(gè)字符串中。ES6又提供了三種新方法。

includes():返回布爾值,表示是否找到了參數(shù)字符串。
startsWith():返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。
endsWith():返回布爾值,表示參數(shù)字符串是否在源字符串的尾部。

repeat方法返回一個(gè)新字符串,表示將原字符串重復(fù)n次。

ES7推出了字符串補(bǔ)全長(zhǎng)度的功能。如果某個(gè)字符串不夠指定長(zhǎng)度,會(huì)在頭部或尾部補(bǔ)全。padStart用于頭部補(bǔ)全,padEnd用于尾部補(bǔ)全。

傳統(tǒng)的JavaScript語(yǔ)言,輸出模板通常是這樣寫的。

$("#result").append(
  "There are " + basket.count + " " +
  "items in your basket, " +
  "" + basket.onSale +
  " are on sale!"
);

上面這種寫法相當(dāng)繁瑣不方便,ES6引入了模板字符串解決這個(gè)問題。

$("#result").append(`
  There are ${basket.count} items
   in your basket, ${basket.onSale}
  are on sale!
`);

模板字符串(template string)是增強(qiáng)版的字符串,用反引號(hào)(`)標(biāo)識(shí)。它可以當(dāng)作普通字符串使用,也可以用來(lái)定義多行字符串,或者在字符串中嵌入變量。

// 普通字符串
`In JavaScript "
" is a line-feed.`

// 多行字符串
`In JavaScript this is
 not legal.`

console.log(`string text line 1
string text line 2`);

// 字符串中嵌入變量
var name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`

上面代碼中的字符串,都是用反引號(hào)表示。如果在模板字符串中需要使用反引號(hào),則前面要用反斜杠轉(zhuǎn)義。

var greeting = ``Yo` World!`;

如果使用模板字符串表示多行字符串,所有的空格和縮進(jìn)都會(huì)被保留在輸出之中。

$("#warning").html(`
  

Watch out!

Unauthorized hockeying can result in penalties of up to ${maxPenalty} minutes.

`);

模板字符串中嵌入變量,需要將變量名寫在${}之中。

function authorize(user, action) {
  if (!user.hasPrivilege(action)) {
    throw new Error(
      // 傳統(tǒng)寫法為
      // "User "
      // + user.name
      // + " is not authorized to do "
      // + action
      // + "."
      `User ${user.name} is not authorized to do ${action}.`);
  }
}

大括號(hào)內(nèi)部可以放入任意的JavaScript表達(dá)式,可以進(jìn)行運(yùn)算,以及引用對(duì)象屬性。

var x = 1;
var y = 2;

`${x} + ${y} = ${x + y}`
// "1 + 2 = 3"

`${x} + ${y * 2} = ${x + y * 2}`
// "1 + 4 = 5"

var obj = {x: 1, y: 2};
`${obj.x + obj.y}`
// 3

模板字符串之中還能調(diào)用函數(shù)。

function fn() {
  return "Hello World";
}

`foo ${fn()} bar`
// foo Hello World bar

如果大括號(hào)中的值不是字符串,將按照一般的規(guī)則轉(zhuǎn)為字符串。比如,大括號(hào)中是一個(gè)對(duì)象,將默認(rèn)調(diào)用對(duì)象的toString方法。

如果模板字符串中的變量沒有聲明,將報(bào)錯(cuò)。

// 變量place沒有聲明
var msg = `Hello, ${place}`;
// 報(bào)錯(cuò)

由于模板字符串的大括號(hào)內(nèi)部,就是執(zhí)行JavaScript代碼,因此如果大括號(hào)內(nèi)部是一個(gè)字符串,將會(huì)原樣輸出。

`Hello ${"World"}`
// "Hello World"

如果需要引用模板字符串本身,可以像下面這樣寫。

// 寫法一
let str = "return " + "`Hello ${name}!`";
let func = new Function("name", str);
func("Jack") // "Hello Jack!"

// 寫法二
let str = "(name) => `Hello ${name}!`";
let func = eval.call(null, str);
func("Jack") // "Hello Jack!"
ES6對(duì)函數(shù)的擴(kuò)展

ES6允許為函數(shù)的參數(shù)設(shè)置默認(rèn)值,即直接寫在參數(shù)定義的后面。

function log(x, y = "World") {
  console.log(x, y);
}

log("Hello") // Hello World
log("Hello", "China") // Hello China
log("Hello", "") // Hello

指定了默認(rèn)值以后,函數(shù)的length屬性,將返回沒有指定默認(rèn)值的參數(shù)個(gè)數(shù)。也就是說(shuō),指定了默認(rèn)值后,length屬性將失真。

(function(a){}).length // 1
(function(a = 5){}).length // 0
(function(a, b, c = 5){}).length // 2

箭頭函數(shù)

ES6允許使用“箭頭”(=>)定義函數(shù)。

var f = v => v;
上面的箭頭函數(shù)等同于:

var f = function(v) {
  return v;
};

如果箭頭函數(shù)不需要參數(shù)或需要多個(gè)參數(shù),就使用一個(gè)圓括號(hào)代表參數(shù)部分。

var f = () => 5;
// 等同于
var f = function (){ return 5 };

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
  return num1 + num2;
};

如果箭頭函數(shù)的代碼塊部分多于一條語(yǔ)句,就要使用大括號(hào)將它們括起來(lái),并且使用return語(yǔ)句返回。

var sum = (num1, num2) => { return num1 + num2; }

由于大括號(hào)被解釋為代碼塊,所以如果箭頭函數(shù)直接返回一個(gè)對(duì)象,必須在對(duì)象外面加上括號(hào)。

var getTempItem = id => ({ id: id, name: "Temp" });

箭頭函數(shù)可以與變量解構(gòu)結(jié)合使用。

const full = ({ first, last }) => first + " " + last;

// 等同于
function full( person ){
  return person.first + " " + person.last;
}

箭頭函數(shù)使得表達(dá)更加簡(jiǎn)潔。

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

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

相關(guān)文章

  • react入門學(xué)習(xí)筆記(一)

    摘要:選擇的主要原因大概是因?yàn)樵摽蚣艹霈F(xiàn)較早,感覺上會(huì)相對(duì)成熟,日后學(xué)習(xí)中遇到問題想要查找答案相對(duì)簡(jiǎn)單一些,對(duì),就是這么簡(jiǎn)單。多說(shuō)無(wú)益,接下來(lái)開始的學(xué)習(xí),我按照我學(xué)習(xí)中帶著的問題來(lái)一一解答,完成我的入門筆記。主要是針對(duì)前端的組件化開發(fā)。 這兩天得空,特意來(lái)折騰了以下時(shí)下火熱的前端框架react,至于為什么選react,作為一個(gè)初學(xué)者react和vue在技術(shù)上的優(yōu)劣我無(wú)權(quán)評(píng)論,也就不妄加評(píng)論了...

    leon 評(píng)論0 收藏0
  • ES6入門筆記(一)

    摘要:用聲明的常量無(wú)法在后面的代碼中改值。表達(dá)式里還有一個(gè)很方便的就是表達(dá)式,舉個(gè)例子運(yùn)行結(jié)果為后聲明的里以數(shù)組的形式存放了函數(shù)的剩余參數(shù),是不是很方便。 ES6入門筆記(一) 安裝babel 由于瀏覽器對(duì)ES6的支持還不是很好,編寫ES6代碼前我們要安裝一個(gè)babel工具將ES6代碼編譯成ES5代碼,用如下命令安裝babel: npm install -g babel-core ...

    warkiz 評(píng)論0 收藏0
  • ES6 Iterator筆記(摘抄至阮一峰的ECMAScript 6入門

    摘要:也就是說(shuō),遍歷器對(duì)象本質(zhì)上,就是一個(gè)指針對(duì)象。執(zhí)行這個(gè)函數(shù),就會(huì)返回一個(gè)遍歷器。一個(gè)對(duì)象如果要有可被循環(huán)調(diào)用的接口,就必須在的屬性上部署遍歷器生成方法原型鏈上的對(duì)象具有該方法也可。后面跟的是一個(gè)可遍歷的結(jié)構(gòu),它會(huì)調(diào)用該結(jié)構(gòu)的遍歷器接口。 ES6 Iterator筆記(摘抄至阮一峰的ECMAScript 6入門) Iterator的遍歷過程 創(chuàng)建一個(gè)指針對(duì)象,指向當(dāng)前數(shù)據(jù)結(jié)構(gòu)的起始位...

    mayaohua 評(píng)論0 收藏0
  • es6入門筆記

    摘要:批量聲明循環(huán)箭頭函數(shù)中可以省略,如果括號(hào)里只有返回的表達(dá)式,那么花括號(hào)和關(guān)鍵字也可以省略。箭頭函數(shù)指向?qū)嵗闹赶蚴窃摵瘮?shù)被調(diào)用的指向該函數(shù)是被哪個(gè)對(duì)象所調(diào)用時(shí)的就是箭頭函數(shù)中的指向是定義時(shí)的指向?qū)嵗闹赶? 常量const const a = 1; a +=2; console.log(a); //報(bào)錯(cuò) VM6833:2 Uncaught TypeError: Assignment t...

    renweihub 評(píng)論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

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

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

0條評(píng)論

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