在javascript
,我可以使用,例如這樣的表述:Javascript-like ||在PHP
window.foo = window.foo || [];
如果沒有window.foo
它會被分配到陣列,但不會轉化成boolean
。
但是,如果我會在php
做這樣的事情,我會得到true
或false
。 (ig。boolean
結果,不等於true
的值)
爲什麼存在這種差異?
PS這個問題不是關於如何使用,而是問題是關於爲什麼。
在javascript
,我可以使用,例如這樣的表述:Javascript-like ||在PHP
window.foo = window.foo || [];
如果沒有window.foo
它會被分配到陣列,但不會轉化成boolean
。
但是,如果我會在php
做這樣的事情,我會得到true
或false
。 (ig。boolean
結果,不等於true
的值)
爲什麼存在這種差異?
PS這個問題不是關於如何使用,而是問題是關於爲什麼。
區別在於操作員返回的內容。在PHP中,邏輯運算符返回布爾值。在JavaScript中,邏輯運算符返回實際的操作數,並依賴於隱式轉換將它們轉換爲布爾值,當上下文需要時。
如果你想,如果結果爲真,並最後在PHP否則返回第一個操作數的功能,您可以使用三元運算符的速記形式(?:
):
PHP.net說:
從PHP 5.3開始,可以省略三元運算符的中間部分。表達式expr1?:如果expr1的計算結果爲TRUE,則expr3返回expr1,否則返回expr3。
使用特雷納裏,而不是 – k102
@ K102我知道和使用它,尤其是短表':'這一點,只是想知道語言 – baldrs
之間的區別「爲什麼不一樣?」 - 因爲這兩種語言以兩種不同的方式實現邏輯或操作符。這不一樣。因爲它不同。 – deceze