真是让人疑惑的基础。又是一堆奇怪的题目。

题目一. 应该是关于作用域的

function test(n) {
this.x = n;
return this;
}
var x = test(1);
var y = test(2);
console.log(x === y); // true
console.log(x.x, y.x); // 2 2

题目二. 关于 基本数据类型 和 引用数据类型

这题已经坑过了非常多的人。不仅仅是作为题目。

下面这两行是会报错的。

var f = function(){}
(function(){})();

下面这个就不报错,虽然和 之前的代码实际上效果是一样的。

var f = function(){}
+function(){}();

js 报错(intermediate value)(...) is not a function

题目三. JS 判断 - 极度坑爹

console.log(true == 'true');  // false

题解之高程三第三章 相等操作符 原则:

  • 1.如果有一个操作数是 bool 值。则比较之前:先将 true 变为 1,false 变为 0
  • 2.如果一个操作数是字符串,另一个操作数是字符,则比较之前:字符串 -> 数字(Number的方式)
  • 3.如果一个操作数是对象,另外一个不是,则调用对象的 valueOf 方法。

所以,这么看的话,就不奇怪了。

console.log(true == 'true');  // false
console.log(1 == 'true'); //false
console.log(1 == parseInt('true')); //false
console.log(1 == NaN); //false

根据 NaN 的 无敌 特性: 我跟任何人都不一样(不相等).所以

console.log(false == 'true');  // false
console.log(false == 'true'); //false
console.log(false == parseInt('true')); //false
console.log(false == NaN); //false

顺便来谈谈 对象类的 判断

console.log("" == ""); // true  基本数据类型
console.log([] == []); // false 引用数据类型
console.log({} == {}); // false 引用数据类型
console.log(new String("") == new String("")); // false 引用数据类型

题目四. 函数提升问题

var f = function(){return true};
var g = function(){return false}; function g(){};
(function(){
if(g() && []!==[]) {
f = function(){return false};
function g() {return true};
}
})();
console.log(f());
console.log(g());

那些年坑爹的JS题目的更多相关文章

  1. 一道原生js题目引发的思考(鼠标停留区块计时)

    我瞎逛个啥论坛,发现了一个题目,于是本着练手的心态就开始写起来了,于是各种问题接踵而至,收获不小. 题目是这样的: Demo: mouseenter与mouseover区别demo 跨浏览器的区块计数 ...

  2. 百度移动搜索自动转码太坑爹,JS跳转地址会被抓取

    这段时间碰到个很崩溃的问题,一个页面通过 script 加载请求服务端进行统计再输出js进行跳转,分为两个步骤分别统计, 打开页面通过script 请求远程服务器进行统计并输出要通过js使页面跳转的最 ...

  3. 阿里巴巴Web前端面试的一道JS题目,求解答!!!

    题目大概是这种: function outer(){ return inner; var inner = "a"; function inner(){}; inner = 9; } ...

  4. 【转】外国朋友出的js题目,你能对几道

    原文地址 http://perfectionkills.com/javascript-quiz/ 中文地址加解释:by Aaron:http://www.cnblogs.com/aaronjs/p/3 ...

  5. JS题目

    1.请你谈谈Cookie的弊端 cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但还是有很多局限性的. 第一:每个特定的域名下最多生成20个cookie 1.IE6或更低版本最 ...

  6. js题目小记

    一.字符串反转 第一种方法:利用数组方法 //先split将字串变成单字数组,然后reverse()反转,然后将数组拼接回字串 var str = "abcdef"; str.sp ...

  7. 记录一道有意思的js题目

    偶然机会,在codewars上面开始做题,遇到一道有意思的题目,记录一下: 题目是这样的: In this kata, you will write a function that returns t ...

  8. 几个简单的html+css+js题目

    1.页面中有一图片,请在下划线处添加代码能够实现隐藏该图片的功能 <img id="pic" src="door.jpg" width="200 ...

  9. 有趣的js题目

    ([]).length ({}).length // undefined ([] + {}).length ({} + {}).length 具体解释见此.

随机推荐

  1. javascript 中的JSON.stringify - 将对象和数组转换为json格式(来源于网络)

          JSON.stringify 函数 (JavaScript) 将 JavaScript 值转换为 JavaScript 对象表示法 (Json) 字符串.     JSON.stringi ...

  2. eclipse安卓模拟器Failed to install on device 'emulator-5554': timeout处理方案

    我们在用模拟器调试的时候,经常会出现Failed to install on device 'emulator-5554': timeout这个错误.其实就是有些虚拟器在部署的时候时间过于长.系统就认 ...

  3. sql server导入excel等数据

    1.首先打开并登陆sql server数据库 2.选择要将表导入的数据库,右击选择任务-->导入数据 3.在弹出的窗口中选择下一步 4.在弹出的窗口中选择数据源,也就是从哪种文件导入,sql s ...

  4. this、new、call和apply的相关问题

    讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本篇打算换一个思路从应用的角度来讲解this指针,从这个角度理解 ...

  5. sequelize 用于PostgreSQL,MySQL,SQLite和MSSQL的Node.js / io.js ORM

    安装 Sequelize可通过NPM获得. $ npm install --save sequelize # And one of the following: $ npm install --sav ...

  6. css3制作左右拉伸动画菜单

    微博上看到这样一篇文章(http://js.itivy.com/?p=495),用jquery和css3制作左右拉伸动画菜单,看了下实现效果(http://js.itivy.com/jiaoben96 ...

  7. 数据结构 Job

    问题描述 有 n 项工作在等待队列中等待处理,编号为 1-n. 每个工作有个优先级 p.处理机同一时间只能处理一项工作.处理机决定接下来处理哪一项工作的方式为:从队首取出一项工作 x,若等待队列中没有 ...

  8. 《Head First Servlets & JSP》-6-会话管理-listener etc. demo

    工程结构 上下文参数示例 示例程序展示了如何从上下文读取参数,并在上下文监听器中生成属性对象和在上下文中设置属性. 建立一个简单的JavaBean对象作为属性:Dog.java package com ...

  9. 使用Elasticsearch-jdbc为MySQL数据库建立索引

    elasticsearch-jdbc 环境 Ubuntu 14.04 JDK 1.8.0_66 Elasticsearch 2.3.1 Elasticsearch-jdbc 2.3.1.0 Elast ...

  10. 按失真类型分类整理IQA数据集:TID2013

    前面已经整理了TID2008,这次整理TID2013的工作相对较简单,只需要改代码的一部分就可以了,首先我大概介绍一些TID2013. TID2013是TID2008的加强版,链接如下:http:// ...