XFE 技术 生活 笔记 文集

javascript小知识

🔖 javascript 👀 107 🕒 2018-07-12 👨‍🎓 戡玉

《JavaScript面向对象编程指南》和《javascript秘密花园》的部分学习笔记

小知识1

  1. 空字符串"",null,undefined,数字0,数字NaN——条件判断时会被自动转换为flase

  2. 内建对象Boolean,Number,String的new对象都可以通过valueOf()转换为对应值

  3. 设置指定范围的随机数公式:((max-min)*Match.random()+min)

  4. 限制输入范围:Match.min(Math.max(min,input),max)

  5. 字符串转数字——字符串*1,其他类型转字符串——"字符串"+对象

  6. NaN——"不是数字",属于特殊数字

    • 运算失败会得到NaN
    • NaN与任何数字运算结果都为NaN
  7. (Infinity|-Infinity)——无穷数

    • 任何数除以0都为(Infinity|-Infinity)

    • Infinity和-Infinity的相互运算都为NaN

    • Infinity和-Infinity与数字的常规运算都为(Infinity|-Infinity)

小知识2

【对象】

  • 对象字面量——"键"可为空字符串

  • 检索——[]支持表达式

  • 枚举(for..in遍历)

    1. 由于游览器差异,无法保证遍历顺序
    2. 键key为字符串类型
    3. 会自动过滤掉不存在的元素(比如数组设置length)
    4. 删除——delete不会触及原型链中的属性

【数组】

  • 长度
    1. []支持表达式
    2. arr.length设大不会分配更多空间,arr.length设小将会删除大于length的已有项
    3. 删除——delete删除只会删除"值",不会删除数组位[空间]

【函数】

  • arguments数组化
    1. Array.prototype.slice.call(arguments); 这个转化比较慢,在性能不好的代码中不推荐这种做法
  • 柯里化
    1. 将一个多参数函数变成单参数函数的过程,把函数完全变成「接受一个参数,返回一个值」的固定形式

【类型】

  1. typeof()中的括号代表的是分组操作符,而不是意味着typeof是作为函数使用
  2. typeof返回的是字符串类型,typeof foo !== 'undefined'判断类型似乎是它唯一的用处
  3. 通过使用否操作符两次,可以把一个值转换为布尔型——"!!"

【eval】

  • eval只在被直接调用并且调用函数就是eval本身时,才在当前作用域中执行

【定时器】

  • setTimeout第一个参数可为函数对象,也可为函数字符串
  • setTimeout第一个参数为字符串形式时,内部调用的是eval方法
  • setTimeout第三个参数为参数传递项

小知识3

对象数组化

    var obj={"age":12};

    Array.prototype.push.call(obj,1,2);

    console.log(obj);

    //{0: 1, 1: 2, age: 12, length: 2},得到了length属性的同时,获得了序列化的值对属性