为了账号安全,请及时绑定邮箱和手机立即绑定

关于变量未定义和未赋值的问题

<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.我在慕课网站上先成功运行一次后,再进行我的上述操作,右侧小窗口输出的都是第一次的正确代码。

感谢解答

正在回答

4 回答

a:删除第二第三行,num1和num2 没有被定义,整个js不能正确运行,所以不会执行第二行以后的代码;

b:修改成var num1;var num2,变量被定义,但是没有赋值,系统会给一个默认值,就是undefined

c:2.3行互换,NaN是未知错误,系统无法判定num1的类型,至于为啥可以运行,我猜测是因为num1 前面的+号

d:你没有点击提交按钮,所以右侧的窗口还是你修改前的效果


2 回复 有任何疑惑可以回复我~
#1

Jeoop 提问者

非常感谢!
2017-05-31 回复 有任何疑惑可以回复我~

感谢提出这个问题以及回答问题的各位!拓展了自己的思路

0 回复 有任何疑惑可以回复我~

补充c点:2.3行互换,num1虽在后面定义并赋值,但声明提前(即把定义提到代码顶部),它的值为undefined。

               +号运算,javascript优先期望操作数为数字,因此,javascript会把undefined隐式转换为NaN,转

               换结果无意义,6+NaN表达返回NaN(中文意思:不是一个数字)。

2 回复 有任何疑惑可以回复我~

只定义了变量,没有赋值,输出就是undefined.

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于变量未定义和未赋值的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信