js前端小问题(二)

240 阅读1分钟

Math.max()

利用Math.max()来判断一个数组的最大值,有3种简单的方法

let arr=[1,5,2,7,8,23];
Math.max(...arr)//利用的是ES6里面的扩展运算符
Math.max.apply(null,arr)//利用的是apply()方法
Math.max.call(null,...arr)//利用的是call()方法

apply和call的区别

  • fn.apply(参数1,[,,,])
    fn函数会立即执行,参数2传的是数组,参数1是改变后this的指向,参数1如果为null,则不改变this的指向
  • fn.call(参数1,...[,,,]) 和apply一样,只是参数2是一个一个数,类似于展开后的数组

Number()为0的情况

注意1Number({})是NaN,与空数组不同
注意2Number(undefined)也是NaN

 Number()
 Number(0)
 Number('')
 Number('0')
 Number(false)
 Number(null)
 Number([])
 Number([0])//数组中如果只有一个值,也会转为相应的值,这里是0,如果是多个的话,就是NaN
 Number(['0'])

布尔值为false的情况

NaN '' undefined null 0 -0

以下哪一条js语句会产生运行错误

var obj=( );//会报错,语法错误
var obj=[ ];//数组对象
var obj={ };//对象
var obj=/ /;//是正则对象;

判断数据类型的万能方法

var obj=/ /;
Object.prototype.toString.call(obj)////[object RegExp]
//obj,是指把指向给obj,要写call的目的是解决子类重写的toString方法带来的影响,当然用其他改变this指向的方法也可以

函数自调用

两种形式:

//第一种
var i=function(){
        console.log(1)
    }();
//第二种
(function(){
        console.log(2)
    })()