javascript使用误区(switch、this)

1、switch 语句会使用恒等计算符(===)进行比较:

以下实例由于类型不一致不会执行 alert 弹窗:

1 var x = "10";
2 switch(x) {
3     case 10: alert("Hello");
4 }
2、字符串中使用反斜杠 (\)换行,不能直接回车换行。
1 var x = "Hello \
2 World!";

 3. 关于this的指向

function函数中,this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this指向的是window;当函数被作为某个对象的方法调用时,this就等于那个对象

html
<
button id='btn'>按钮</button>
JavaScript
οnlοad=function(){ var btn=getElementById('btn'); btn.onclick=function(){ this.style.color=red;//this指向btn setTimeout(function(){ this.style.color=red;//setTimeout是window的方法,故this指向window },1000) } }

问:上述代码,在setTimeout中使用function函数,this始终指向window,如何解决呢?

  常见的window属性和方法有alter,document,parseInt,setTimeout,setInterval,localtion等等,这些在默认的情况下是省略了window前缀的。

答:箭头函数可解决this执行环境所造成的一些问题

箭头函数中,this是在定义函数时绑定的,不是在执行过程中绑定的。简单的说,函数在定义时,this就继承了定义函数的对象。

JavaScript
οnlοad=function(){ var btn=getElementById('btn'); console.log(this);//window btn.οnclick=function(){ console.log(this);//<button ...>...</button> setTimeout(()=>{ this.style.color=red;//this指向button元素 },1000) } }

 

转载于:https://www.cnblogs.com/embrace-ly/p/10537988.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值