2017-09-27 71 views

回答

3

它們是相似的,兩者通常用於表示沒有價值。在JavaScript中,!!null評估爲false,而在Elixir中,!!nil評估爲false。就像JavaScript的null,你可以在一個布爾上下文中使用nil爲「falsy」值,例如:

if nil do 
    IO.puts "foo" 
else 
    IO.puts "bar" 
end 

將打印「欄」

我不認爲兩者之間有許多差異,也許只有幾個角落案例。例如,null > 0在JavaScript中評估爲false,而nil > 0在Elixir中評估爲true

+0

在Elixir中'nil> 0'漸漸變爲真,讓我想起Wat講座:https://www.destroyallsoftware.com/talks/wat :) –

+5

Elixir中的'nil'是一個原子:'is_atom (nil)#⇒true'。 (實際上,這使得'nil> 0' truthy。) – mudasobwa

+0

在Erlang中,很明顯'true','false'和'nil'是原子,但是在Elixir中它不太明顯(因爲語法不同),但是你可以通過'nil ==:nil#=> true'自行測試。 – Hauleth