面试必备

js数据类型

  1. 8种数据类型。Number、String、Boolean、Null、undefined、object、symbol、bigInt。
    2.在ES5的时候,我们认知的数据类型确实是 6种:Number、String、Boolean、undefined、object、Null。
    ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。
    谷歌67版本中还出现了一种 bigInt。是指安全存储、操作大整数。(但是很多人不把这个做为一个类型)

数据类型判断

  1. typeof 对基本数据类型判断]()是没有问题的 但是遇到引用数据类型就不起作用了
    typeof :
    对于基本类型,除 null 以外,均可以返回正确的结果。
    对于引用类型,除 function 以外,一律返回 object 类型。
    对于 null ,返回 object 类型。
    对于 function 返回 function 类型。
    其中,null 有属于自己的数据类型 Null , 引用类型中的 数组、日期、正则 也都有属于自己的具体类型,而 typeof 对于这些类型的处理,只返回了处于其原型链最顶端的 Object 类型,没有错,但不是我们想要的结果。
  2. instanceof 判断 new 关键字创建的引用数据类型]() 不考虑null 和 undefined
    instanceof 只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型
  3. constructor 完全可以应对基本数据类型和引用数据类型]() 但是声明一个构造函数 把他的原型指向Array的原型 这种情况下也不能判断
    null 和 undefined 是无效的对象,因此是不会有 constructor 存在的,这两种类型的数据需要通过其他方式来判断。
  4. 函数的 constructor 是不稳定的,这个主要体现在自定义对象上,当开发者重写 prototype 后,原有的 constructor 引用会丢失,constructor 会默认为 Object
  5. Object.prototype.toString.call() 是完美解决方案
  6. jquery.type()
    如果对象是undefined或null,则返回相应的“undefined”或“null”。

arguments

1.arguments 对象是当前函数的一个内置属性,只能在其关联函数的范围内直接进行访问。
当 arguments 对象开始执行时,它会为每个函数进行实例化。

2.使用 arguments 对象可以创建可接受任意个参数的函数,这一功能还可以通过在定义函数时使用参数数组结构来实现

3.在函数代码中,使用特殊对象 arguments,我们无需明确指出参数名,就能访问它
传递到函数的所有参数和参数的数目都存储在arguments对象中,用 arguments 对象检测函数的参数个数,引用属性 arguments.length。arguments对象的长度是由实参个数决定的,不是形参个数决定的(形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠)
与其他程序设计语言不同,JS不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据 Netscape 的文档,最多可接受 255 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。

4.用 arguments 对象判断传递给函数的参数个数,模拟函数重载

5.把arguments对象转换成一个真正的数组,含有一个函数所有参数的标准javascript数组对象(arguments 对象不是数组,但访问各个参数与访问数组元素的方式相同,要使用 [ ] )
Array.from() 是个非常推荐的方法,其可以将所有类数组对象转换成数组。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值