js 扒一扒这些题目都考了哪些知识点
1.空数组是true还是false
题目:
<script>
var tmp = 'a';
if([]==false)
tmp+='b';
if(![]) tmp +='c';
alert(tmp);
</script>
*结果*: ab
分析:
知识点,当任意值与布尔值相比较,都会将两边的值转化为Number
而[]与false比较,false转换为0,[]为空数组,也转换为0
但是,因为[]虽然没有元素,但也是一个object,既然是object,在用于判断条件时就会被转换为true。
因此,得出上面的结果。
推荐阅读>>js 空数组是true还是false
引申
[]==[],这样的结果是true还是false呢?
[]数组,在js中的是对象,对象使用==比较都是比较的引用,简单说,就是,如果是同一个对象,就相等,如果不是同一个对象,就不相等,而每次使用[]都相当于新建了一个数组对象,所以[]==[]创建了两个数组对象,是不相等的。
推荐阅读>>
2.循环中的闭包
题目:
<script>
for(var i=0;i<5;i++){
setTimeout(function(){
alert(i);
},500)
}
</script>
*结果* 弹出五次‘5’
分析:
这个题目属于非常常见的闭包的坑。
我们先来分析这个题目。在函数中,alert的这个i变量,在函数中并没有进行声明,那么这个值从哪里来?就近原则,从for循环中取出。找到了i的来源,那么我们来确定i的大小。
这里我们需要了解setTimeout的机制,我们要知道,setTimeout并不会阻止当前的同步代码,它属于异步函数,它的执行时机依赖于同步代码的执行时间,在我们的这个例子中,alert被丢到异步执行的队列,当轮到alert执行的时候,for循环已经结束,而变量i没有被处理,仍然保持着循环结束时的值,所以,输出结果为5。
这一部分的内容,建议看一看setTimeout的机制、闭包、异步等知识点
推荐阅读>>
3.定义和调用的顺序
题目:
<script>
a();
function a(){alert('hello');}
b();
var b=function(){alert('world');}
</script>
*结果* hello 报错
分析:我们来看一下报错原因。
我们调用b函数的时候,b还没有定义。所以需要把代码第四行和第三行换下顺序,就ok了。
为什么呢?这里就涉及到了js程序的执行与顺序实现问题。
页面加载过程中,浏览器会对页面上或载入的每个js代码块或文件进行扫描,如果遇到定义式函数,则进行预处理,处理完成之后再开始由上至下执行;遇到赋值式函数,则只是将函数赋给一个变量,不进行预处理,待调用到的时候才进行处理。
推荐阅读>>js 程序执行与顺序实现详解
js 扒一扒这些题目都考了哪些知识点的更多相关文章
- PHP 扒一扒这些题目都考了哪些知识点
1.模除 题目: <?php echo -10%3; *结果* -1 分析:其实这道题的知识点是在考模除和正负号的关系,那么我们看一段进阶的代码 <?php echo "10%3 ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- linux2.6.24内核源代码分析(2)——扒一扒网络数据包在链路层的流向路径之一
在2.6.24内核中链路层接收网络数据包出现了两种方法,第一种是传统方法,利用中断来接收网络数据包,适用于低速设备:第二种是New Api(简称NAPI)方法,利用了中断+轮询的方法来接收网络数据包, ...
- View绘制详解(三),扒一扒View的测量过程
所有东西都是难者不会,会者不难,Android开发中有很多小伙伴觉得自定义View和事件分发或者Binder机制等是难点,其实不然,如果静下心来花点时间把这几个技术点都研究一遍,你会发现其实这些东西都 ...
- 扒一扒ReentrantLock以及AQS实现原理
提到JAVA加锁,我们通常会想到synchronized关键字或者是Java Concurrent Util(后面简称JCU)包下面的Lock,今天就来扒一扒Lock是如何实现的,比如我们可以先提出一 ...
- 扒一扒.NET Core的环境配置提供程序
很久之前,在玩Docker的时候顺便扒了扒,最近,终于下定决心花了些时间整理并成文,希望能够给大家一些帮助. 目录 .NET Core中的配置 ASP.NET Core中的配置 扒一扒环境变量提供程序 ...
- 扒一扒MathType不为人知的技巧
MathType作为一款编辑数学公式的神器,很多人在使用它时只是很简单地使用了一些最基本的模板,很多功能都没有使用.MathType功能比你想象中的大很多,今天我们就来扒一扒MathType那些不为人 ...
- 扒一扒spring,dom4j实现模拟实现读取xml
今天leadr提出需求,原来公司项目中读取解析xml文件的代码效率太低,考虑切换一种xml为数据封装格式与读取方式以提高效率.我这灵机一动spring对bean的依赖注入就是读取xml文件,可以尝试扒 ...
- ASP.NET Core 2.2 : 十六.扒一扒2.2版更新的新路由方案
原文:ASP.NET Core 2.2 : 十六.扒一扒2.2版更新的新路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不大 ...
随机推荐
- 教你Zbrush 4R7怎样创建Z球
随着CG行业的迅猛发展,就业门槛大幅度提高,对于从业人员要求就是要“又快又好”,作为一个模型师,常会碰到一天或两天完成一个全身角色的考题,而且还需要角度摆出造型,以前做这个的话,可能比较难,现在有了Z ...
- 谷歌面试官经典作品(CTCI)目录
1.1 判断一个字符串中的字符是否唯一 1.2 字符串翻转 1.3 去除字符串中重复字符 1.8 利用已知函数判断字符串是否为另一字符串的子串 2.1 从链表中移除重复结点 2.2 实现一个算法从一个 ...
- SharedPreferences Android
类似iOS的NSUserDefaults,采用key-value(键值对)形式,主要用于轻量级的数据存储 public class MainActivity extends AppCompatActi ...
- Anytime项目开发记录3
应用想要做的好,反馈必然少不了~哈哈~ 用户的反馈.意见.建议,甚至是谩骂,都是对项目的反馈. 如果一个应用没有听取用户的反馈,那么应用会离着用户越来越远.懂得用户要什么是一回事,听得到用户的反馈,则 ...
- Fiddler 4 实现手机App的抓包
Fiddler不但能截获各种浏览器发出的HTTP请求, 也可以截获各种智能手机发出的HTTP/HTTPS请求. Fiddler能捕获IOS设备发出的请求,比如IPhone, IPad, MacBook ...
- Windows Server 2008 R2(x64) IIS7+PHP5(FastCGI)环境搭建
相关软件下载: 1.PHP下载地址: http://windows.php.net/downloads/releases/php-5.4.4-nts-Win32-VC9-x86.zip 如果是win2 ...
- [P2387魔法森林
题面 题意: 给出一个图,边权有两维,a与b. 求1到n的一条路径使得路径经过的边的最大的a与b的和最小,输出最小之和. \(Solution:\) 如果做过这题,那么就显得很简单了很好想了. 又是想 ...
- 1013 Battle Over Cities (25 分)(图的遍历or并查集)
这题用并查集或者dfs都可以做 dfs #include<bits/stdc++.h> using namespace std; ; bool mp[N][N]; int n,m,k; b ...
- python基础训练营04-函数
任务四 函数的关键字 函数的定义 函数参数与作用域 函数返回值 一.函数的关键字: def 二.函数的定义: 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号 ...
- parity的使用
parity --chain dev --port 8045 ps aux | grep "parity" ps -elf | grep "pari"