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());
    
  • 相关阅读:
    BZOJ2219数论之神——BSGS+中国剩余定理+原根与指标+欧拉定理+exgcd
    Luogu 3690 Link Cut Tree
    CF1009F Dominant Indices
    CF600E Lomsat gelral
    bzoj 4303 数列
    CF1114F Please, another Queries on Array?
    CF1114B Yet Another Array Partitioning Task
    bzoj 1858 序列操作
    bzoj 4852 炸弹攻击
    bzoj 3564 信号增幅仪
  • 原文地址:https://www.cnblogs.com/can-i-do/p/8573237.html
Copyright © 2011-2022 走看看