2017-08-10 64 views
-1

對不起,如果這個問題似乎老,但好奇的答案。 所以我有下面的代碼片段Javascript速記布爾類型

function halo(firstname, lastname) { 
 
    lastname = lastname || 'no last name'; 
 
    console.log(firstname + ' ' + lastname); 
 
} 
 

 
function testbol(start) { 
 
    start = start || true; 
 
    console.log(start); 
 
} 
 

 
halo('jee'); 
 
halo('jee', 'tan'); 
 
    
 
testbol(); 
 
testbol(false);

的問題是:爲什麼第二testbool功能產生true而應該false

+0

請參閱[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators)返回的是什麼。如果'start'爲false,'start || true' is'true' – ASDFGerte

+0

,因爲false是錯誤的...... – epascarello

回答

-1

「僞或真」 是真實的。考慮句子「天空是紅色的還是天空是藍色的」 - 是真的還是假的?

+0

它既不 - 它只是一個聲明。 – Jamiec

+3

我們不在哲學課上,我不打算去「考慮由'天空是紅色或天空是藍色'這句話所表達的主張」的細微程度來展示什麼是更多*基本概念。 :) – shabs

+0

「天空是紅色的,或者天空是藍色的 - 這是怎麼讓你感覺到的?」 :) – Jamiec

2

left || right如果左側爲真值,則評估爲左側,否則評估爲右側。

false || true評估爲右手邊,即true

簡而言之:您正在測試真實性definedness這將是:

testdefined(); 
 
testdefined(false); 
 

 
function testdefined(start){ 
 
    start = typeof start === "undefined" ? true : start; ; 
 
    console.log(start); 
 
}

+0

你陷入了瘋狂的境地,讓事情變得更加混亂。爲什麼你會看到左手側和右手側的事情,這不是數學運算中的乘法除法和減法運算。規則很簡單,在AND語句中任何錯誤都會導致錯誤,在OR語句中任何事情都會導致聲明爲真。簡單。 –

+0

@MaxAlexanderHanna - 編號'3 || 5'不是'真'。 – Quentin

+0

是那些布爾值? –

0

你的最後一句話評價假|| true其結果爲true。