2016-08-12 33 views
1

這裏是寫由斯科特·艾倫演示:JavaScript的模板例如

var x = 1; 
 
var y = 3; 
 
var upper = function (string, ...values) { 
 
    var result = ''; 
 
    for (let i = 0; i < string.length; i++) { 
 
    \t result += string[i]; 
 
    if (i < values.length) { 
 
    \t result += values[i] 
 
    } 
 
    } 
 
    console.log('string', string) 
 
    console.log('values', values) 
 
    return result.toUpperCase() 
 
}; 
 
var result = upper `${x} + ${y} is ${x + y}` 
 
console.log(result)

我的問題:如何通過JavaScript的

${x} + ${y} is ${x + y}檢測數組和字符串數組值?

它是:拆分${x} + ${y} is ${x + y},並選擇在外面${}的部分?

第二個問題:我已將${x} + ${y} is ${x + y}換成(),stringvalues,但結果與第一個例子相同。它是正確的語法?或者我應該避免在這種情況下使用()

var x = 1; 
 
var y = 3; 
 
var upper = function (string, ...values) { 
 
    var result = ''; 
 
    for (let i = 0; i < string.length; i++) { 
 
    \t result += string[i]; 
 
    if (i < values.length) { 
 
    \t result += values[i] 
 
    } 
 
    } 
 
    console.log('string', string) 
 
    console.log('values', values) 
 
    return result.toUpperCase() 
 
}; 
 
var result = upper (`${x} + ${y} is ${x + y}`) 
 
console.log(result)

P/S:我在谷歌搜索使用關鍵字進行搜索javascript template,但它沒有提到任何文件。

+2

請參閱[Template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) – guest271314

+0

$ {}中的任何內容都被視爲一個vanilla javascript表達式。就這樣。 –

回答

1

p/s:我在Google搜索中用關鍵字搜索了javascript模板 ,但沒有提到它的任何文檔。

嘗試使用搜索詞Template literals

模板文字是字符串常量,允許嵌入的表達式。 您可以使用多行字符串和字符串插值功能與 他們。

與模板的文字,你可以利用語法 製糖替代的這樣更具可讀性:

var a = 5; 
var b = 10; 
console.log(`Fifteen is ${a + b} and\nnot ${2 * a + b}.`); 
// "Fifteen is 15 and 
// not 20." 
+0

感謝您的鏈接。我看到IE不支持模板文字,所以我認爲我不應該學習它。 –

+1

@HappyCoding你應該明白它(或者至少知道它),因爲這些新功能最終會進入所有常見的瀏覽器(特別是Edge,它將取代IE) – rvighne

1

這是ECMAScript中2015年的一項新功能稱爲模板文字 。它是一個由反引號分隔的字符串,其中可以包含JavaScript表達式。通常,這些表達式被評估並插入到字符串中。但是,通過在模板文字之前直接指定函數名稱,可以使用該函數創建自定義結果。例如:

var name = "Bob"; 
`Hello, ${name}!` 
// prints "Hello, Bob!" 

function ignoreValues(strings, values) { 
    // strings is array of original string, split at ${} points 
    // values is array of evaluated result of expressions within ${} 
    // both arrays are in order, so you can go back and forth between their elements 
    return strings.join(''); 
} 

ignoreValues`Hello, ${name}!` 
// prints "Hello, !" 

請參閱documentation