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中的是对象,对象使用==比较都是比较的引用,简单说,就是,如果是同一个对象,就相等,如果不是同一个对象,就不相等,而每次使用[]都相当于新建了一个数组对象,所以[]==[]创建了两个数组对象,是不相等的。

推荐阅读>>

js中[]==[],为什么执行结果是false

js中基本上8中情况的逻辑false情况

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的机制、闭包、异步等知识点

推荐阅读>>

理解Javascript的闭包

JavaScript作用域问题?

关于JavaScript的问题

3.定义和调用的顺序

题目:

<script>
a();
function a(){alert('hello');}
b();
var b=function(){alert('world');}
</script>
*结果*

hello 报错

分析:我们来看一下报错原因。

我们调用b函数的时候,b还没有定义。所以需要把代码第四行和第三行换下顺序,就ok了。

为什么呢?这里就涉及到了js程序的执行与顺序实现问题。

页面加载过程中,浏览器会对页面上或载入的每个js代码块或文件进行扫描,如果遇到定义式函数,则进行预处理,处理完成之后再开始由上至下执行;遇到赋值式函数,则只是将函数赋给一个变量,不进行预处理,待调用到的时候才进行处理。

推荐阅读>>js 程序执行与顺序实现详解

js 扒一扒这些题目都考了哪些知识点的更多相关文章

  1. PHP 扒一扒这些题目都考了哪些知识点

    1.模除 题目: <?php echo -10%3; *结果* -1 分析:其实这道题的知识点是在考模除和正负号的关系,那么我们看一段进阶的代码 <?php echo "10%3 ...

  2. 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的路由方案,与原来的方案在使用上差别不 ...

  3. linux2.6.24内核源代码分析(2)——扒一扒网络数据包在链路层的流向路径之一

    在2.6.24内核中链路层接收网络数据包出现了两种方法,第一种是传统方法,利用中断来接收网络数据包,适用于低速设备:第二种是New Api(简称NAPI)方法,利用了中断+轮询的方法来接收网络数据包, ...

  4. View绘制详解(三),扒一扒View的测量过程

    所有东西都是难者不会,会者不难,Android开发中有很多小伙伴觉得自定义View和事件分发或者Binder机制等是难点,其实不然,如果静下心来花点时间把这几个技术点都研究一遍,你会发现其实这些东西都 ...

  5. 扒一扒ReentrantLock以及AQS实现原理

    提到JAVA加锁,我们通常会想到synchronized关键字或者是Java Concurrent Util(后面简称JCU)包下面的Lock,今天就来扒一扒Lock是如何实现的,比如我们可以先提出一 ...

  6. 扒一扒.NET Core的环境配置提供程序

    很久之前,在玩Docker的时候顺便扒了扒,最近,终于下定决心花了些时间整理并成文,希望能够给大家一些帮助. 目录 .NET Core中的配置 ASP.NET Core中的配置 扒一扒环境变量提供程序 ...

  7. 扒一扒MathType不为人知的技巧

    MathType作为一款编辑数学公式的神器,很多人在使用它时只是很简单地使用了一些最基本的模板,很多功能都没有使用.MathType功能比你想象中的大很多,今天我们就来扒一扒MathType那些不为人 ...

  8. 扒一扒spring,dom4j实现模拟实现读取xml

    今天leadr提出需求,原来公司项目中读取解析xml文件的代码效率太低,考虑切换一种xml为数据封装格式与读取方式以提高效率.我这灵机一动spring对bean的依赖注入就是读取xml文件,可以尝试扒 ...

  9. ASP.NET Core 2.2 : 十六.扒一扒2.2版更新的新路由方案

    原文:ASP.NET Core 2.2 : 十六.扒一扒2.2版更新的新路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不大 ...

随机推荐

  1. 【转】Git远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  2. POSTMAN——环境变量

    打开Manage Environment 设置几个自己的环境变量 可以在此看到设置的环境变量 在URL栏填写变量名,这个变量对应着百度的网址 send后可以查看回显 接下来设置全局变量,点开globa ...

  3. 【java并发编程】十三章:显式锁:LOCK

    java5以后,新增了显式锁,用于当内置锁不能满足需求后可选择的一种高级方案. lock接口的特点 与内置锁一样,他能提供互斥性,内存可见性,可重入等特征,与内置锁不同的是,Lock提供了一种无条件, ...

  4. ASP NET Core --- 资源塑形, HATEOAS, Media Type

    参照 草根专栏- ASP.NET Core + Ng6 实战:https://v.qq.com/x/page/d07652pu1zi.html 一.Get返回资源塑形 1.添加集合塑形Enumerab ...

  5. 洛谷P1379八数码难题

    题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中. 要求解的问题是:给出一种初始布局(初始状态)和目标布局(为 ...

  6. 【习题集锦】全国青少年NOIP培训教材 ISBN 978-7-305-04246-1

    目录 第一章 回溯法 找路径问题 递归代码: procedure find(k:integer); {找第K步的可能性} begin if 到目的地 {表示一条路已找出} then begin 输出路 ...

  7. 怎么用Q-Q图验证数据集的分布

    样本数据集在构建机器学习模型的过程中具有重要的作用,样本数据集包括训练集.验证集.测试集,其中训练集和验证集的作用是对学习模型进行参数择优,测试集是测试该模型的泛化能力. 正负样本数据集符合独立同分布 ...

  8. sqlserver2012 查询远程数据库

    EXEC sp_addlinkedserver 'LinkName','','SQLOLEDB','121.43.177.236'EXEC sp_addlinkedsrvlogin 'LinkName ...

  9. HDU 4757 Tree(可持久化字典树)(2013 ACM/ICPC Asia Regional Nanjing Online)

    Problem Description   Zero and One are good friends who always have fun with each other. This time, ...

  10. asp.net Forms登录核心方法

    登录核心方法: private void Signin(string curUserId) { System.Web.Security.FormsAuthenticationTicket tk = , ...