2011-07-23 41 views
2

通常,||手段或,但它是什麼意思在這種情況下:||是什麼意味着在這種su?中?

function getCharCount (e,s) { 
    s = s || ","; 
    return getInnerText(e).split(s).length; 
}  
+0

有人可以請澄清。有些答案表明,如果s爲null,那麼逗號和另一個upvoted如果s爲空或「」然後逗號。 –

+2

@巴里:這是因爲人們喜歡點擊箭頭!雷諾斯回答加上評論是最正確的。術語是明智的,它最終成爲一個合併類型運算符而不是邏輯或。 – Marc

+0

[這個結構(x = x || y)是什麼意思?]的可能的重複(http://stackoverflow.com/questions/2802055/what-does-this-construct-xxy-mean) –

回答

-1

這意味着是s,如果是零,被分配值「」;如果s不爲零,則它保留其價值。

+0

這個答案只是像其他人一樣正確。感謝不合理的降價,夥計們! –

10

s = s || ","

這是默認的參數選項。如果s是「falsey」 s將被設置爲","

所以,如果s是""undefined將有一個有用的默認值。

+2

爲簡潔起見,如果它列出了'null','0','false'和'NaN' – Marc

+0

@Marc,那麼我將只列出「falsey」值's'在正常使用函數 – Raynos

+2

_during函數的正常使用_您不知道相同的JavaScript開發人員我做! – Marc

-1

ss,或者如果沒有定義s(你沒有通過在函數調用的參數),它是","

+0

s是falsey(undefined,false,0,「」,null,...)的任何值都會觸發逗號字符串的賦值,而不僅僅是未定義的。我沒有倒下,但想解釋你的答案中缺少的東西。 – jfriend00

+0

如果您希望語句僅在s未定義時觸發,則它必須是這樣的:'s = typeof s!=「undefined」? s:',';' – jfriend00

0

這種辦法在Javascript定義可選參數。

你可以調用這個函數只有1個PARAM ...

-1

有時,你不知道,如果一個變量將ahve值 所以你告訴你自己,你必須有一個值。

如果theres沒有值(null),那麼你將擁有自己的默認值。

那是你寫的

s = s || ","; 

我不知道如果S具有值或沒有,但如果不是這樣,就把「」值。

0

Raynos提供了答案,但還有更多要補充的描述。

s = s || ","; 

如果s任何falsey值,比如undefined, null, 0, false, NaN, "",等等,然後s將獲得初始化爲","

這對初始化函數的可選參數或保證參數至少有一些初始值非常有用。人們必須非常小心如何使用它,因爲此構造禁止故意傳遞參數s的錯誤值。

在此示例中,您不能傳遞一個空字符串作爲s的值,因爲它將更改爲","。這個功能沒關係,但可能不適用於其他功能。在其他類型的功能中,您將無法通過可能是允許值的false

如果一個只想以防止不被傳遞的參數,那麼你必須使用這樣的事情,其中​​明確測試對於不確定的,並允許其他falsey值的傳:

s = typeof s != "undefined" ? s : ','; // if s is undefined, initialize 

,或者如果你想驗證它是一個字符串,並允許一個空字符串,您可以使用:

s = typeof s == "string" ? s : ',';  // if s not a string, initalize