js变量作用域
如果一个全局变量和函数变量名字相冲突,那么考虑以下的情况:
var x=1;
function asd()
{
alert(x);
var x = 2;
alert(x);
}
function asda()
{
alert(this.x);
var x = 2;
alert(x);
}
第一个函数由于变量命名相冲突,显示的是 undefined,但是第二个函数已经是显式调用了,所以不会存在问题。
js函数的重名
如果要是在脚本中函数之间的名字重复了,那么会根据最后一个重命名的函数来执行。
就好比如:var x = new function(alert("a"));
var x = new function(alert("b"));
如果你要是把这个场景比作是内存中的堆和栈,就容易理解了。x只是一个引用变量,也就是根引用,具体指向哪个函数,那就是程序的事了。当然最后指向的,也就会被执行。
js中函数的几种定义方式:
function x()
{
//
}
var x = function()
{
//
}
var x = new function('{return 'asd'}');
由于JavaScript是解释性语言,当我们定义一个函数的时候,解析引擎生成一个Function对象实例,然后把函数内容保存下来。所以每执行一次函数定义语句,就会生成一个函数。这样,就能解释重名函数为什么只会执行后一个的问题了。
在js函数中动态给元素加上事件:
<div id="elmtDiv">division element</div>
<script language="javascript">
var div = document.getElementById('elmtDiv');
div.attachEvent('onclick', EventHandler);
function EventHandler()
{
this.event.srcElement.style = "width:180px";
}
</script>
