instanceof无法判断基本数据类型
答:instanceof的判断一个对象是否在其原型链原型构造函数的属性 , 基本数据类型是没有原型链的 , 所以不能正确的判断 。 正因为instanceof的判断机制 , 所以使用instanceof判断引用数据类型才有意义
constructor 方式可以判断JS的基本数据类型和引用数据类型 , 但是有一个致命的缺陷 , 使用constructor判断null或者undefined 会导致代码报错 , 会直接导致代码无法执行 。
Object.prototype.toString.call() 方式使用对象上的原型方法(toString())方法进行数据类型判断 , 可以正确的判断基本数据类型和引用数据类型 。
null 和 undefined 的区别undefined的含义是未定义 , 通常用于基本数据类型的初始值
null的含义是空对象 , 通常用于object的初始值
浮点数精度问题 , 你有遇到过吗?是如何解决的?浮点数精度问题是由于计算机是通过二进制的方式储存数据的 , 对于JS来说 , 是变量初始十进制 , 再转化为二进制 , 再进行加减乘数预算 , 最后再转化为十进制 。 对于二进制来说 , 部分整数其实是无限不循环小数 , 所以就会导致浮点数精度问题的出现 。
解决方式:
- toFixed() 方式
- 引入成熟的第三方库:
big.js等
=== 对比较的两个值 进行类型和值得校验 。 校验相对来说更严谨
let const var 有什么区别
块级作用域:let const 具有块级作用域 。 var不具有块级作用域
变量提升: var 具有变量提升的特性 , 可以先使用后声明 , const let 不具有变量提升的特性
重复声明:var可以重复声明一个变量 , 后声明的会覆盖之前声明的变量 。
初始值var let 声明的变量可以不具备初始值 , 但是const声明的变量必须具备初始值
暂时性死区一个变量被声明之前是不可以使用的 , 在语法上被称为暂时性死区 , 但是var是可以的
- 创建对象
- 使该新对象的
prototype指向构造函数的prototype
- 改变创建对象的this指向
- 如果构造函数返回一个对象 , 则返回该对象 , 否则返回新创建的对象
- 箭头函数没有自己的this , 如果在箭头函数中使用this , 会指向上层作用域中this的指向
- 箭头函数没有自己的原型对象
- 箭头函数的写法更简洁
- 箭头函数没有自己的
arguments
深拷贝和浅拷贝有什么区别?深拷贝是在内存中去额外开辟了一个堆 , 存放新的数据 , 改变新数据是不会对原本的数据造成影响的 。
浅拷贝仅仅是拷贝了原数据的储存地址 , 改变数据后 , 原数据也会受到影响 。
可以说一下你对解构的理解吗解构是ES6新增的语法 , 我们通常是使用解构从对象中解构出一个变量 , 如果这个变量在对象中不存在 , 会返回一个undefined , 如果存在将会返回正确的值
- 零售业|确定涨价!iPhone14四款新机全面涨价!国行也在其中!
- 土耳其发现四肢爬行人群,这是咋回事?科学家警告:人类要留心了
- 苹果要大涨价!iPhone 14量产工作就绪:四款齐发 供应商已出货
- 跳水|陈芋汐全红婵包揽女子十米台金银牌:全红婵四跳近乎完美
- 第四大运营商|第四大运营商登场!中国广电官网上线:开启选号
- 二叠-三叠纪大转折时期的四足动物
- 宇宙中有多少维度,人类为何想要进入四维空间?科学家给出了解释
- 苹果|苹果要大涨价!iPhone 14量产工作就绪:四款齐发 供应商已出货
- 古代五个不可思议的科技产品,第四个看了谁不骄傲!
- 黄渤让四位导师演戏演到崩溃,王一博撒娇,钟汉良一秒入戏
