web前端笔记1-JS部分:立即执行函数与闭包,事件冒泡的解决方法

1 篇文章 0 订阅
1 篇文章 0 订阅

从两个名词说起

1.表达式:js 中的一个短语,js 解释器会将其计算出一个结果。程序中的常量是最简单的一类表达式。
2.语句:js 整句或命令。js语句是以分号结束;表达式计算出一个值,但语句用来自行以使某件事发生。

立即执行函数:

也叫匿名自执行函数,是一个可以自己自动执行的函数,不需要借助其他元素。

基本结构

(function(){  
	//方法内容 
})() 
或
(function(){  
	//方法内容
}())

解释:function{…}是一个匿名函数,包围它的一对括号将其转换为一个表达式,紧跟其后的一对括号调用了这个函数。立即执行函数也可以理解为立即调用一个匿名函数。立即执行函数最常见的应用场景就是:将var变量的作用域限制于你们函数内,这样可以避免命名冲突。(用一个括号将function包裹是js语法限制规则)

闭包:

重用一个对象,又保护对象不被篡改的一种机制。

基本结构:

function a(){
	var i =0;
	function b(){
		alert(++i);
	}
	return b;
}
var c = a();
c();

解释:在构造函数体内定义另外的函数作为目标对象的方法函数,而这个对象的方法函数反过来引用外层函数体中的临时变量。这使得只要目标 对象在生存期内始终能保持其方法,就能间接保持原构造函数体当时用到的临时变量值。
更直白的:当函数a的内部函数b被函数a外的一个变量c引用的时候,Javascript的垃圾回收机制GC不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。

事件冒泡问题:

两个概念:
事件捕获(event capturing):通俗的理解就是,当鼠标点击或者触发dom事件时,浏览器会从根节点开始由外到内进行事件传播,即点击了子元素,如果父元素通过事件捕获方式注册了对应的事件的话,会先触发父元素绑定的事件。
事件冒泡(dubbed bubbling):与事件捕获恰恰相反,事件冒泡顺序是由内到外进行事件传播,直到根节点。

事件传播中一般默认的是事件冒泡。
简单结构:

<div class="div1" onclick="test()">
	<div class="div2" onclick="test1()">			
	</div>
</div>

问题:当子div被点击时,子父div的onclick方法都会被触发,有时候我们要避免这样的情况
解决办法:在子div的test1()方法中加:
1.event.cancelBubble = true;
2.event.stopPropagation();
这两种方法在chrome中都可以使用,效果一样。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值