var universe = true;
var string = 'hello ' + (() => {
if (universe = true) {
return 'universe';
} else {
return 'world';
}
});
爲什麼不返回'hello universe'?我怎樣才能做到這一點?我正在嘗試動態構建一個字符串 - 我的具體用例是創建HTML。如何使用連接的匿名函數追加到字符串?
var universe = true;
var string = 'hello ' + (() => {
if (universe = true) {
return 'universe';
} else {
return 'world';
}
});
爲什麼不返回'hello universe'?我怎樣才能做到這一點?我正在嘗試動態構建一個字符串 - 我的具體用例是創建HTML。如何使用連接的匿名函數追加到字符串?
你需要調用匿名函數:
var universe = true;
var string = 'hello ' + (() => {
if (universe = true) {
return 'universe';
} else {
return 'world';
}
})(); // <--- notice() here
謝謝。太棒了。 –
你只是用串串接函數參考,這將導致串連用於函數對象的原始值到目標字符串。所以在這種情況下,您必須調用該函數,而不是直接連接它。
var universe = true;
var string = 'hello ' + (() => {
if (universe == true) {
return 'universe';
} else {
return 'world';
}
})();
而且你的代碼的最可讀的版本是,
var universe = true;
var fetchResult =() => (universe) ? 'universe' : 'world';
var string = 'hello ' + fetchResult();
另外請注意,你是在分配一個值if語句而不是比較它。那麼,如果陳述將被評估爲true
塊,因爲universe = true
將始終評估爲true
。
我建議使用** bold **或* italic *文本來表示強調併爲實際代碼留下'code blocks'。 –
@FelixKling我習慣了這一點。將嘗試改變它。 :) –
我很欣賞你的深度。我現在明白,我需要在最後添加一組括號。 「函數的原始值」是什麼意思? –
更簡潔的方式
var universe = true;
var string = 'hello ' + (() => universe ? 'universe' : 'world')();
這種情況下有什麼功能? –
@FelixKling我同意你的觀點,沒有任何意見,它只是OP功能的縮短版本,*少代碼的錯誤*。 OP在'if'語句中有一個錯誤 – isvforall
您也有一個錯誤的位置:'如果(宇宙=真)' - 這是一個賦值語句。你最有可能的意思是'universe === true' –
爲什麼首先使用函數呢?有條件的運算符看起來更簡短。出於某種原因您是否需要新的範圍? –
這味道就像一個重複的問題。 – 8protons