if(open1==ture)和if(open1="ture")和if(open1)在下面代码中的表现?

来源:2-7 编程练习

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>



写回答 关注

4回答

  • waiting666
    2016-04-11 17:00:02
    已采纳

    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 是 他会因为不符合语法规范直接挂掉 所以可以及时的把问题暴露出来

     

    bblade

    完全帮到我了 ,谢谢

    2016-04-11 18:20:39

    共 1 条回复 >

  • 马大叔
    2016-04-11 16:17:35

    ="ture",变量就成了4个字节。新手,答错别骂我

  • 一个人的旅行7
    2016-04-11 16:13:33

    open1==ture

    是等于,而

    open1=“ture”

    表示赋值,不能用在if语句里面

    if(open1)

    默认表示open1==true

  • 1314520sj
    2016-04-11 16:08:50

    =是赋值语句    ==才是等于

JavaScript入门篇

JavaScript做为一名Web工程师的必备技术,本教程让您快速入门

740162 学习 · 9566 问题

查看课程

相似问题