[英]Different between foo.prototyp.x = & foo.prototype = {x: }
[英]Difference between if (x) { foo(); } and x ? foo() : 0;
小片1:
if ( x ) {
foo();
}
摘錄2:
x ? foo() : 0;
這兩個片段有什么區別?
編輯:更正了語法錯誤。
更新 :順便說一句,似乎有一個更短的符號:
x && foo();
片段#2是無效的ECMAScript表達式,因為它缺少必需的: blah
以使其成為三元組。
編輯:兩個片段之間沒有真正的區別,如果x
是真的,它們都會調用foo
。 如果x
是假的(undefined / false / empty string / 0 /),那么第一個片段將不會評估為任何內容,后一個片段將評估為0
但該0
確實對腳本沒有影響。
我想你的意思是問下面的問題
// Why should I use
if (x) {
do();
}
// instead of
x && do();
要么
// Why should I use
if (x) {
do();
} else {
dont();
}
//instead of
x ? do() : dont()
在編寫時,輸出沒有區別。 我不喜歡在這些情況下使用三元組或&&運算符,因為使用三元組和&&的語義。 三元組返回您未使用的值,&&表達式也是如此。 因此,我寧願使用語言打算使用運算符的方式。
但是,我喜歡使用&&進行空檢查
var val = obj && obj.getValue();
請注意,在這種情況下,我們使用表達式的返回值
通常, if
是一個語句(例如,您不能將它分配給變量)和三元運算符?:
是表達式的一部分(產生一個可以賦給變量的值)。
此外, if
塊可以包含語句,而?:
的組件只能包含表達式。
在你給出的例子中,沒有區別,因為你沒有使用?:
的結果。 只有當x是真值時,兩個片段才會評估foo()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.