代码改变世界

阻止冒泡行为和闭包

2016-06-16 16:00  改吧  阅读(552)  评论(0编辑  收藏  举报

阻止事件冒泡行为,要是不阻止的话,点击div的时候也会同时触发body事件

html代码

<body onclick='load()'>
<div onclick='cli()'>
click this
</div>
</body>

css代码

div{
width:200px;
height:200px;
border:1px red solid;
}

js代码

function load(){
console.log('body')
}
function cli(e){
console.log('div');
if ( e && e.stopPropagation ){
e.stopPropagation();
}
else{
window.event.cancelBubble = true;
return false;
}
}

 

//闭包:内部函数可以访问外部函数的变量

function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
var c=a();
c();//1 返回的b()但是b()可以访问a函数中的变量i

 ps:如果不是因为某些特殊任务而需要闭包,在没有必要的情况下,在其它函数中创建函数是不明智的,因为闭包对脚本性能具有负面的影响,包括处理速度和内存消耗。解决闭包可以使用匿名函数