zoukankan      html  css  js  c++  java
  • 那些年坑爹的JS题目

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

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

    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());
    
  • 相关阅读:
    手动去除桌面快捷方式的小箭头
    免费才是硬道理:简评几款非盈利截屏软件
    策划入门(二)如何写一个项目建议书
    解决Fiddler在IE7下不能拦截的问题
    使用Fiddler轻松下载Flash视频flv流媒体文件
    策划入门(一)什么样的创意是可行的
    EFS加密的一线生机-加密帐户被删的补救方法
    50条重要的C++学习建议
    策划入门(六)如何将模块变成现实
    Windows XP 的任务栏出现重复的工具栏的问题
  • 原文地址:https://www.cnblogs.com/can-i-do/p/8573237.html
Copyright © 2011-2022 走看看