if(open1==ture)和if(open1="ture")和if(open1)在下面代碼中的表現?
可以發現
if(open1==ture)和if(open1)效果是等同的,而if(open1="ture")貌似是錯誤的表達。有大神幫忙解釋下嗎?
<!DOCTYPE html>
<html>
?<head>
? <title> new document </title> ?
? <meta http-equiv="Content-Type" content="text/html; charset=gbk"/> ??
? <script type="text/javascript"> ?
? ??
function openWindow()
{
? ? ? ? var open1 = confirm('really open?');
? ? ? ? if (open1 ==true)
? ? ? ? {
? ? ? ? var open2 = prompt('open what?','http://www.xianlaiwan.cn');
? ? ? ? window.open(open2,'_blank','width=400,height=500,toolbar=no,menubar=no')
? ? ? ? }
? ? ?else
? ? ?{ }
}
? </script>?
?</head>?
?<body>?
? ? ? <input type="button" value="新窗口打開網站" onclick="openWindow()" />?
?</body>
</html>
2016-04-11
if的判斷條件是一個布爾值
1:????open1 == true????是一個判斷 返回一個布爾值 如果confirm點是 他就等價于 true === true
2:????open1????這個值是你的confirm的返回值 你點否 他就是false 點是 他就是true?
注意 所以可以看出上面兩個是等價的
然后加點好玩的
3:????open1 == false????也是一個判斷 返回一個布爾值 通過和式1對比 他的結果 和上面兩個相反
4:????open1 = true????這就是一個賦值語句了 結束后open1值為true 所以條件恒成立
5:????open1 = false????和式4類似 open1值為false 條件恒不成立
然后才是正經的
6:????open1 = "true"????大部分語言認為非零值都是true 所以這個結果open1值為字符串"true" 條件恒成立
7:????open1 = "false"????所以這個結果open1值為字符串"false" 條件恒成立
8:????open1 = 10????類似的 這個也會是條件恒成立
9:????open1 = 0????重點來了 這個會使條件恒不成立???
好吧 其實這些都是不正經的
正經的是 因為一些歷史原因才會有"=","=="的人類語言語義歧義
所以 為了保險 很多語言建議我們
????????把變量放在右側 比如 true == open1 因為 在誤寫成 true = open1 是 他會因為不符合語法規范直接掛掉 所以可以及時的把問題暴露出來
?
2016-04-11
="ture",變量就成了4個字節。新手,答錯別罵我
2016-04-11
open1==ture
是等于,而
open1=“ture”
表示賦值,不能用在if語句里面
if(open1)
默認表示open1==true
2016-04-11
=是賦值語句??? ==才是等于