这二个东西都是各有各的用处,一般if判断的时候,我用undefined的时候多些;a标签的时候用 void 0 的时候多些。还有的时候,就是写JQ插件之类的东西的时候,会把undefined设置为一个未定义的形参,就这样,(function(a,b,undefined){...})(jq,win),,类似这样的。
一般多数情况下,你可以把它们俩一样使用。但区别还是有的,undefined它不是保留词,这玩艺就是一个属性,在一些低版本的浏览器中是可以被重写的,这种例子就不举了,你自己百度领会哈。虽然说在ES5中,它确实是一个全局的只读属性,按说是不能重写的,但这事没谱啊,例如某此局域变量里
那void 0呢,就是void这个运算符对给定的表达式求值,然后返回undefined。意思吧,你可以理解为,只要是void后面你跟任何东西,返回的都是undefined。来吧,用这个不用担心被重定义undefined了,那void后面最短的,就是0了,而且void这玩艺不能被重写!而且void 0长度比undefined短,压缩有时也用它来代替undefined。