美文网首页深入解读JavaScript
Javascript知识点收集

Javascript知识点收集

作者: 悟C | 来源:发表于2018-09-11 23:41 被阅读2次
1. ~x等同于-(x+1),在-(x+1)中唯一能够得到0(或者严格说是-0)得x值是-1,也就是说如果x为-1时,~和一些数值在一起会返回假值0,其他情况则返回真值。我们可以用~配合indexOf:
var test = '台风来了!';

if (~test.indexOf('来了')) {
  console.log('台风来了!');
}

if (~test.indexOf('走了')) {
  console.log('台风走了!');
} else {
  console.log('台风没走!');
}
//=>台风来了!
//=>台风没走
2. 其类型和布尔类型之间得相等比较,规则:
  • 如果Type(x)是布尔类型,则返回ToNumber(x) == y 的结果
  • 如果Type(y)是布尔类型,则返回x == ToNumber的结果
var x = '42'
var y = true

console.log(x == y)
// => false
3. 相等比较的一个坑:
function doSomething1(a) {
  if (a == "") {           // ""先进行Number("") 为0,然后0 == 0
    console.log('执行了1')
  }
}

function doSomething2(a, b) {
  if (a == b) {                    // []先进行toString() 为 ""
    console.log('执行了2')
  }
}

doSomething1(0)
//=> '执行了1'
doSomething2("", [])
//=>'执行了2'

(1) 如果Type(x)是数字,Type(y)是字符串,则返回x == ToNumber(y)的结果
(2) 如果type(x)是字符串,Type(y)是数字,则返回ToNumber(x) == y的结果

4. 对象作为映射的主要缺点是不能使用非字符串作为键,下面举个例子
var m = {};
var x = { id: 1 };
var y = { id: 2 };
m[x] = "foo";
m[y] = "bar";

m[x];  // "bar"
m[y]; // "bar"

这里发生了什么?x和y两个对象字符串化都是"[object object]",所以m中只设置了一个键。

5.函数节流的代码实现:
function throttle(fn, interval) {
  var _self = fn,
      timer,
      firstTime = true;
  
  return function() {
    var args = arguments,
        _me = this;
    
    if (firstTime) {
      _self.apply(_me, args);
      return firstTime = false;
    }

    if (timer) {
      return false;
    }

    timer = setTimeout(function() {
      clearTimeout(timer);
      timer = null;
      _self.apply(_me, args);
    }, interval || 500);
  }
}

6.懒性加载函数,通过第一次加载重写函数来避免重复的嗅探工作:
function addEvent(elem, type, handler) {
  if (window.addEventListener) {
    addEvent = function (elem, type, handler) {
      elem.addEventListener(type, handler, false);
    }
  } else if (window.attachEvent) {
    addEvent = function (elem, type, handler) {
      elem.attachEvent('on' + type, handler);
    }
  }
  addEvent(elem, type, handler);
}

相关文章

  • Javascript知识点收集

    1. ~x等同于-(x+1),在-(x+1)中唯一能够得到0(或者严格说是-0)得x值是-1,也就是说如果x为-1...

  • Js易错点梳理

    前言 本文是学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,...

  • JavaScript易错知识点整理

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向...

  • JavaScript易错知识点整理

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向...

  • JavaScript 易错知识点整理

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向...

  • javascript易错知识点总结

    本文是我学习JavaScript过程中收集与整理的一些易错知识点, 将分别从变量作用域,类型比较,this指向,函...

  • 闭包会造成内存泄漏吗?

    前言 在谈内存泄漏这个问题之前先看看JavaScript的垃圾收集机制,JavaScript 具有自动垃圾收集机制...

  • js之内存泄漏

    一、JavaScript 的垃圾收集机制 javascript具有自动垃圾收集机制,也就是说,执行环境会负责管理代...

  • 2019-04-24

    JavaScript简单知识点总结

  • JavaScript语法教程学哪些知识点?

    JavaScript语法教程学哪些知识点?JavaScript语法需要学计算机基础、Javascript变量、数据...

网友评论

    本文标题:Javascript知识点收集

    本文链接:https://www.haomeiwen.com/subject/mkmlmftx.html