bblade
2016-04-11 15:46
可以发现
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.imooc.com');
window.open(open2,'_blank','width=400,height=500,toolbar=no,menubar=no')
}
else
{ }
}
</script>
</head>
<body>
<input type="button" value="新窗口打开网站" onclick="openWindow()" />
</body>
</html>
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 是 他会因为不符合语法规范直接挂掉 所以可以及时的把问题暴露出来
="ture",变量就成了4个字节。新手,答错别骂我
open1==ture
是等于,而
open1=“ture”
表示赋值,不能用在if语句里面
if(open1)
默认表示open1==true
=是赋值语句 ==才是等于
JavaScript入门篇
740162 学习 · 9566 问题
相似问题