5

我使用的標籤模板字符串在下面的代碼試圖用標記模板字符串給出 '未捕獲的SyntaxError:意外的標記'

var a = 5; 
var b = 10; 
var pp=""; 
function tag(strings, ...values) { 
    pp+=strings[0]; // "Hello " 
    pp+=strings[1]; // " world " 
    pp+=values[0]; // 15 
    pp+=values[1]; // 50 

    console.log(pp+"Bazinga!"); 
} 

tag`Hello ${ a + b } world ${ a * b}`; 

但它給

Uncaught SyntaxError: Unexpected token ...(…)

function tag(strings, ...values) {

+3

什麼JS引擎你測試你的ES6代碼? – Quentin

+0

您使用的是翻譯?模板字符串在沒有標籤的環境中工作嗎? – Bergi

+0

是的,我使用最新的Chrome控制檯 –

回答

4

由於語法錯誤Unexpected token ...告訴你,不是標籤是問題,而是其餘操作符的用法。請嘗試以下操作:

var a = 5, 
    b = 10; 
function tag(strings) { 
    var pp=""; 
    pp+=strings[0]; // "Hello " 
    pp+=strings[1]; // " world " 
    pp+=arguments[1]; // 15 
    pp+=arguments[2]; // 50 

    return pp+"Bazinga!"; 
} 

console.log(tag`Hello ${ a + b } world ${ a * b}`); 

按照ES6 compatibility table,你需要通過the harmony flag在目前的Chrome,使其餘的語法。

+0

很酷,它的工作,但沒有得到如何啓用休息語法 –

+4

@ AkhileshKumar把這個鏈接放在地址欄中並採取行動獨佔突出顯示的選項:'chrome:// flags /#enable-javascript-harmony' – Andreas

相關問題