今天研究了下jquery中的undefined这个参数,然后看了下网上的解释,看懂了,但是往上有一个代码我不明白,<script type=”text/javascript”>
var undefined = ‘myValue’;window.undefined = ‘myValue_2′;(function(window){ alert(undefined);})(window)
这里打印的是myValue_2,而不是myValue,为什么会是这样 window.undefined和自己定义var undefined有什么区别吗 他们是一样的吗 还有就是undefined是Global 的一个属性 和window.undefined有什么不同吗 求高人解答
var undefined = ‘myValue’;window.undefined = ‘myValue_2′;(function(window){ alert(undefined);})(window)
这里打印的是myValue_2,而不是myValue,为什么会是这样 window.undefined和自己定义var undefined有什么区别吗 他们是一样的吗 还有就是undefined是Global 的一个属性 和window.undefined有什么不同吗 求高人解答
window.undefined = "myValue_2"; //覆盖了上一行
var 定义本环境下的变量。你上面的就是定义window环境下的变量,
而window.xx 是不管在什么环境下,定义的都是window全局变量。
如果你把这两行代码颠倒,会得到完成不同的结果。
var undefined = ‘myValue’;
window.undefined = ‘myValue_2′;
alert(undefined);
根据js的解析顺序,下面的代码会覆盖上面的代码。
写了一个页面,你自己拷过去试试:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head> <body>
<script type="text/javascript">
<!--
window.undefined = "ab"
var undefined = 'myValue';
alert(undefined);
//-->
</script>
</body>
</html>
比如,你在最顶层定义个函数function aaa()
那么你调用这个函数的方法可以是直接调用,aaa()也可以是window.aaa()
如果定义的函数名和内置的函数重名,那么会覆盖原来内置函数,这个要特别注意。