<script type="text/javascript"> var num1=10-5; var num2=6+num1; document.write("小明还剩:"+num1+"元"+"<br>"); document.write("小红花:"+num2+"元买个铅笔盒"); </script>
这是原代码,如果将代码进行下述修改后,为什么会出现这种情况?
a.如果删除2.3行代码,代码全部不会显示,包括“小明还剩”等document.weite()里的。
b.如果第2.3行改为
var num1; var num2;
的话,即只定义不赋值,输出的num值是undefined。
c.如果2.3行代码互换
var num2=6+num1; var num1=10-5;
输出的num2是NaN。
d.我在慕课网站上先成功运行一次后,再进行我的上述操作,右侧小窗口输出的都是第一次的正确代码。
感谢解答
a:删除第二第三行,num1和num2 没有被定义,整个js不能正确运行,所以不会执行第二行以后的代码;
b:修改成var num1;var num2,变量被定义,但是没有赋值,系统会给一个默认值,就是undefined
c:2.3行互换,NaN是未知错误,系统无法判定num1的类型,至于为啥可以运行,我猜测是因为num1 前面的+号
d:你没有点击提交按钮,所以右侧的窗口还是你修改前的效果
感谢提出这个问题以及回答问题的各位!拓展了自己的思路
补充c点:2.3行互换,num1虽在后面定义并赋值,但声明提前(即把定义提到代码顶部),它的值为undefined。
+号运算,javascript优先期望操作数为数字,因此,javascript会把undefined隐式转换为NaN,转
换结果无意义,6+NaN表达返回NaN(中文意思:不是一个数字)。
只定义了变量,没有赋值,输出就是undefined.