你不知道的javascript 笔记(中)

你不知道的javascript 笔记(中)

  • 内置类型

    • nullundefinedStringnumberbooleanobjectsymbol符号
    • typeof null === 'object'
    • 函数functionobject一个子类,是一个可调用对象,它有一个内部属性[[call]]使其可以调用
      • 函数对象的length属性是其声明的参数的个数
    • typeof [] === 'object'
    • typeof运算符总是返回一个字符串
    • undefined和undeclared区别
      • typeof undeclared同样返回undefined
      • 通过typeof安全防范机制(阻止报错)来检查undeclared变量
  • 数组

    • 类数组转真数组
      • Array.prototype.slice.call(arguments)
      • Array.from()
  • 字符串

    • 字符串也是类数组
    • 字符串不可变
    • 字符串借用数组的非变更方法
      • Array.prototype.join.call(str,"-")
      • Array.pototype.map.call(str,function(){})
  • 数字

    • 小数点前面的0可以省略,小数点后面的0也可以省略
    • tofixed()指定小数部分的显示位置
    • toPrecision()指定有效数位的显示位数
    • 整数检测Number.isInteget()
  • 特殊数值

    • null指曾赋过值,但是目前没有

    • undefined值从未赋值

    • NAN

      • isNaN()判断一个值是否是NaN
    • 无穷数 — Infinity

    • 特殊等式

      • Object.is()

        能使用=就不要使用Object.is(),因为前者效率更高,更为通过。后者主要用来处理那些特殊的相等比较

  • 值和引用

    • 简单值总是用过值复制的方式来赋值
    • 复合值总是通过引用复制的方式来赋值
  • 封装对象

    • 自动封装字面量的字符串和数字
    • 拆封 valueOf
  • 创建包含undefined单元的数组

    • Array.apply(null,{length:3})
  • Symbol字符

    • 不用new关键字
  • 原生原型

    • Array.prototype
    • String.prototype
  • 字符串拼接

    • 如果对象有自己的toString()方法,字符串化时就会调用该方法并使用其返回值。
    • 数组的默认的toString()经过重新定义,将所有单元字符串化后再用","连接起来。
  • JSON.stringify()

    • 遇到undefine、function、symbol时自动将其忽略,在数组中则返回null。
    • 可以传递有一个可选参数,可以用来指定对象序列化过程中哪些属性应该处理。
    • 还可以写一个可选参数space,用来指定输出的缩进格式。
    • 字符串、数字、布尔值和null的JSON.stringify()和toString基本相同
    • 如果对象定义了toJSON方法,该方法会在字符串化前调用。
  • toNumber

    • true转换为1,false转换为0,undefined为NaN,null为0

    • valueOf和toString均不返回基本类性质,会产生TypeError错误

  • 假值对象

    var a = new Boolean(false)
    var b = new Number(0)
    var c = new String("") 
    // 上面结果都为true
    
  • + +- -能够将字符创相加或者取绝对值

    var c = "3.14"
    var d = 5 + + c   //8.14
    var e = - -“3.14”  //3.14
    
  • 使用Date.now()来过去当前的时间戳,使用new Date(…).getTime()获取指定时间的时间戳

  • +号字符串拼接

    • 如果+的其中一个操作数是字符串,则执行字符串拼接,否则执行数字加法

    • 如果a是数字,隐式转换先调用a的valueOf()方法,然后通过toString抽象操作将返回值转换为字符串

    • 如果是a是对象,则不一样

      var a = {
      	valueOf:function(){return 42}
      	toString:function(){return 4}
      	a + ""  //42
      	String(a)  //4
      }
      
  • 布尔值强制类型转换

    function onlyOne(){
    	var sum = 0
    	for(var i = 0;i<arguments.length;i++){
    		sum += Number(!!arguments[i])  //!!
    	}
    	return sum === 1
    }
    
  • 隐式强制类型转换为布尔值

    • if
    • for第二个表达式
    • while
    • ?:
    • || &&
      • || 如果条件判断第一个操作数结果为true就返回第一个操作数的值,如果为false就返回第二个操作数的值
      • && 如果条件判断第一个操作数为true就返回第二个操作数的值,如果为false就返回第一个操作数的值
  • == 与 ===区别

    • 允许在相等比较中进行强制类型转换,而=不允许
  • 异步

    • 事件循环伪代码

      var eventloop = []
      var event
      whilr(true){
          if(eventloop.length > 0){
              event = eventloop.shift()
              try{
                  event()
              }catch(err){
                  reportError(err)
              }
          }
      }
      
    • 定时器只能确保你的回调函数不会在指定时间间隔之前运行。

    • 异步不等同于并行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值