(1)两等号判等,会在比较时进行类型转换;
(2)三等号判等(判断严格),比较时不进行隐式类型转换,(类 型不同则会返回false);
(3)Object.is 在三等号判等的基础上特别处理了NaN、-0和+0,保证-0和+0不再相同,但
Object.is(NaN, NaN)会返回true。Object.is应被认为有其特殊的用途,而不能用它认为它比其它的相等对比更宽松或严格。
面试题2:common.js和es6中模块引入的区别?
答案:
CommonJS是一种模块规范, 最初被应用于Nodejs, 成为Nodejs的模块规范。运行在浏览器端的JavaScript由于也缺少类似的规范,在ES6出来之前,前端也实现了一套相同的模块规范(例如: AMD),用来对前端模块进行管理。自ES6起,引入了一套新的ES6 Module规范,在语言标准的层面.上实现了模块功能,而且实现得相当简单,有望成为浏览器和服务器通用的模块解决方案。但目前浏览器对ES6 Module兼容还不太好,我们平时在Webpack中使用的export和import,会经过Babel转换为CommonJS规范。在使用上的差别主要有:
CommonJS 模块输出的是一个值的拷贝, ES6 模块输出的是值的引用;
CommonJS模块是运行时加载,ES6 模块是编译时输出接口;
Common]s 是单个值导出,ES6 Module可以导出多个;
Common]s是动态语法可以写在判断里,ES6 Module静态语法只能写在顶层。
面试题3:JavaScript有几种方法判断变量的类型?
答案:
(1)使用typeof检测当需要判断变量是否是number, string, boolean, function, undefined等类型时,可以使用typeof进行判断。
(2)使用instanceof检测instanceof运算符与typeof运算符相似,用于识别正在处理的对象的类型。与typeof方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。
(3)使用constructor检测constructor本来是原型对象上的属性,指向构造函数。但是根据实例对象寻找属性的顺序,若实例对象上没有实例属性或方法时,就去原型链上寻找,因此,实例对象也是能使用constructor属性的。
读者福利
========
由于篇幅过长,就不展示所有面试题了,想要完整面试题目的朋友(另有小编自己整理的2024大厂高频面试题及答案附赠)