Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

JavaScript的语句优先级问题

  JavaScript中,有高优先级的语句只有两个,它们是function和var,剩下的其它语句都是低优先级的。不废话了,看代码更容易明白。
alert(temp);
var temp;
  怎么样?声明前被使用而错误吗?不会的,这里的alert会输出undefined,而不是出现变量未定义的错误。也就是说,在执行到alert的时候,temp这个变量的内存空间在当前调用堆栈(call stack)下已经分配好了。接着再看一段代码。
alert(temp);
var temp=1;
  这个代码依然输出undefined,虽然var语句的权限很高,但是后面的赋值运算符显然不是属于语句本身的东西,因此优先执行了var temp;而把temp=1;保留下来。这些现象说明了var语句的权限高,但是是否高过其它语句呢?再来看看下面的代码:
alert(temp);
if(0)var temp;
  这个代码还是输出undefined,你会发现var很无节操,明明人家if语句的操作数都是0了他还是可以执行。由此可见,if是屌丝,var是高富帅。
  最后我们来介绍下另一个高富帅吧:
alert(temp);
function temp(){};
  这是和var语句类似的性质,比var高明的是,它声明的变量的值不再是undefined。事实上,function执行的时候蕴含了var的效果,同时还会给变量赋予初始值。然而var和function这两个语句的优先级比较,实际上是没有意义的。因为function包含了var的功能,var又不能把变量重新赋予undefined。一攻一受其乐融融!
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^