javascript使用误区(switch、this)
1、switch 语句会使用恒等计算符(===)进行比较:
以下实例由于类型不一致不会执行 alert 弹窗:
var x = "10";
switch(x) {
case 10: alert("Hello");
}
var x = "Hello \
2 World!";
3. 关于this的指向
function函数中,this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this指向的是window;当函数被作为某个对象的方法调用时,this就等于那个对象
html
<button id='btn'>按钮</button>
JavaScript
onload=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
onload=function(){
var btn=getElementById('btn');
console.log(this);//window
btn.onclick=function(){
console.log(this);//<button ...>...</button>
setTimeout(()=>{
this.style.color=red;//this指向button元素
},1000)
}
}
javascript使用误区(switch、this)的更多相关文章
- 关于javascript的误区
JavaScript 误区 接触JavaScript两年多遇到过各种错误,其中有一些让人防不胜防,原来对JavaScript的误会如此之深,仅以此文总结一下常见的各种想当然的误区 String rep ...
- [译]Javascript中的switch语句
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- JavaScript 基础 if switch 弹窗 运算符
脚本语言最重要的几个部分: 数据类型 运算符 控制语句 数组 方法(函数) 一.基础知识 关键字:系统定义 有意义的名字如 background link 等 标识符:自己定 比如class的名字a ...
- JavaScript逻辑分支switch 练习题
1.输入月份,显示当月的天数, 利用case穿透简化代码 var month = prompt("请输入月份"); var year = prompt("请输入年份&q ...
- 前端性能优化(三)——传统 JavaScript 优化的误区
注:本文是纯技术探讨文,无图无笑点,希望您喜欢 一.前言 软件行业极其缺乏前端人才这是圈内的共识了,某种程度上讲,同等水平前端的工资都要比后端高上不少,而圈内的另一项共识则是--网页是公司的脸面! 几 ...
- 《编写可维护的JavaScript》——JavaScript编码规范(五)
语句和表达式 在JavaScript中,诸如if和for之类的语句有两种写法,使用花括号的多行代码或者不使用花括号的单行代码.比如: //不好的写法,尽管这是合法的JavaScript代码 if (c ...
- javascript基础总结
一.语法 ------------------------------ javascript中的一切(变量.函数名和操作符)都区分大小写. 标识符:就是指变量.函数.属性的名字,标识符要求如下 1 第 ...
- javascript知识总汇
命名: 变量名和函数命名:第一个单词小写以后每个单词首字母大写.geteElementById() 对象命名:每个单词首字母大写. 数据类型 typeof()方法返回数据类型. number数据类型: ...
- 《JavaScript 闯关记》之语句
表达式在 JavaScript 中是短语,那么语句就是整句命令.表达式用来计算出一个值,语句用来执行以使某件事发生.从本质上看,语句定义了 JavaScript 中的主要语法,语句通常使用一或多个关键 ...
随机推荐
- windows下如何安装vundle?
参考: http://blog.csdn.net/zhuxiaoyang2000/article/details/8636472 vundle是gmarik 受 ruby的 bunler的启发开发的. ...
- ps2016新功能
1 内容识别缩放(alt ctrl shift c) 2 内容感知移动 3 画笔大小和画笔硬度调整 alt + 鼠标右键:上下为硬度 ...
- c# 之 事务
SqlTransaction事务的简单例子 { DataTable dt = new DataTable(); System.Data.SqlClient.SqlConnection cnn = ne ...
- Latex: extra alignment tab has been changed to cr
参考: Error: extra alignment tab has been changed to \cr Latex: extra alignment tab has been changed t ...
- 2、corosync集群初步
配置高可用集群 配置环境:两台centos7 192.168.184.141 192.168.184.142 corosync v2 + pacemaker corosync v2:vote sys ...
- 基于SVM的python简单实现验证码识别
验证码识别是一个适合入门机器学习的项目,之前用knn 做过一个很简单的,这次用svm来实现.svm直接用了开源的库libsvm.验证码选的比较简单,代码也写得略乱,大家看看就好. 1. 爬取验证码图片 ...
- JS 上下文模式
function test(){ console.log(a);//undefined; var a = 1; } test(); 也许你会遇到过上面这样的面试题,你只知道它考的是变量提升,但是具体的 ...
- Echarts 设置地图大小
项目中要添加地图,默认地图太小,折腾半天终于找到解决方案. series: [ { //name: '香港18区人口密度', type: 'map', mapType: 'jiangsu', // 自 ...
- 关于PS抠图的各种方法 有这个就可以去面试了!!!加油!!!
今天和大家说说关于PS抠图的方法 高手也就如此 你值得拥有!!好了 废话不多说 下面进入正题 首先:我们得分析所给的图 然后运用不同的方法,当然也可以相互灵活运用 1:不抠图 2:万能抠图方法:快速 ...
- Broken Keyboard (a.k.a. Beiju Text) 思路
问题:You’re typing a long text with a broken keyboard. Well it’s not so badly broken. The only problem ...