企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
#### 1. JavaScript规定了几种类型: 1. 共七种数据类型 2. 基本数据类型:string number boolean symbol null undefined 3. 复杂数据类型:object array function #### 2. JavaScript对象的底层数据结构是什么 1. #### 3. Symbol类型在实际开发中的应用,可手动实现一个简单的Symbol 1. #### 4. JavaScript中的变量在内存中的具体存储形式 1. 基本数据类型存储在栈中 2. 复杂数据类型存储在堆中 #### 5. 基本类型对应的内置对象,以及他们之间的装箱拆箱操作 1. #### 6. 理解值类型和引用类型 1. 值类型和引用类型操作方式不同 2. 存储方式不同:栈(存取快,内存小)、堆(存取慢、内存大) #### 7. null和undefined的区别 1. null表示“没有对象”,即此处不应该有值 2. undefined表示此处应该有值,但是还没有定义 #### 8. 至少可以说出三种判断JavaScript数据类型的方式,以及他们的优缺点,如何准确的判断数组类型 1. Object.prototype.toString.call( val ) === '[object Object]' 2. constructor:Number.constructor === Number:true,构造函数的constructor属性指向有可能更改,所以不一定准确 3. typeof #### 9. 可能发生隐式类型转换的场景以及转换原则,应如何避免或巧妙应用 1. #### 10. 出现小数精度丢失的原因,JavaScript可以存储的最大数字、最大安全数字,JavaScript处理大数字的方法,避免精度丢失的方法 1. JS中可存储的最大数字:Number.MAX_VALUE:1.7976931348623157e+308 2. JS中能够表示最大安全整数范围是:Number.MIN_SAFE_INTEGER / Number.MAX_SAFE_INTEGER #### 11. Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是? 1. hasOwnProperty方法只判断对象自己是否拥有某个属性,不去原形上进行查找 #### 12. 强制类型转换 1. 转换为Boolean:六个值转换为 false ,其它全为 true:【 undefined, null, NaN, 0, +0, -0 】 2. 转换为String:主要发生在字符串的加法运算时,当一个值为字符串,另一个值为非字符串,则另一个转换为字符串 1. ‘2’ + 1// "21" 2. ‘2’ + true// "2true" 3. ‘2’ + undefined// "2undefined" 4. ‘2’ + false// "2false" 5. ‘2’ + null// "2null" 6. 当另一方为对象时,会有几种情况 7. ‘2’ + {}//"2[object Object]" 8. ‘2’ + {a: 1, b: 2}//"2[object Object]" 9. ‘2’ + []//"2" 10. ‘2’ + [2,'array']//"22,array" 11. ‘2’ + {}//"2[object Object]" 12. ‘2’ + function(){}//"2function(){}" 13. let obj = { toString(){ return 'a' } } ==> ‘2’ + obj//"2a" 3. 转换为Number:有加法运算符,无String类型的时候,都会优先转换为Number类型 1. true + 0//1 2. true + true//2 3. true + false//1 4. 转换为Number:除了加法运算符,其它运算符都会把运算自己转成数值:- * / 1. ‘5’ - ‘2’//3 || ‘5’ * ‘2’//10 || ‘5’ / ‘2’//2.5 2. true - 1//0 || false - 1//-1 || '1' -1//0 3. '5' * []//0 || false / '5'//0 || 'abc' - 1//NaN 4. null + 1//1 || undefined + 1 //NaN