2016-08-12 31 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