通用面试题 :
++i 和 i++ 性能上的区别 :
说明 :
- 在内建数据类型的情况下,效率没有区别 .
- 在自定义数据类型的情况下,++i效率更高 !
分析:
- ++i 返回对象的引用 .
- i++ 总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数 .
在 cocos 引擎底层里 , 循环中用到的就是 ++i ;
JavaScript 面试题 :
undefined 与 null 的 相同点 和 不同点 :
- undefined 和 null 在 if 语句中,都会被自动转为 false
- “==”报告两者相等 , “===”报告两者不相等 , 说明两者还是有本质区别的
if(!undefined)
{
console.log('undefined is false');
}
// undefined is false
if(!null)
{
console.log('null is false');
}
// null is false
undefined == null
// true
undefined === null
//false
- 将 null 和 undenfined 转化成数字时 , null 被转化成了0 , 而 undefined被转化成了NaN ( 非数字型 ) .
Number(null)
// 0
5 + null
// 5
Number(undefined)
// NaN
5 + undefined
// NaN
总结 :
- null 表示 “没有对象”,即该处不应该有值 .
- undefined 表示 “缺少值”,就是此处应该有一个值,但是还没有定义 .
undefined 典型用法是:
- 1. 变量被声明了,但没有赋值时,就等于 undefined
- 2. 调用函数时,应该提供的参数没有提供,该参数等于 undefined
- 3. 对象没有赋值的属性,该属性的值为 undefined
- 4. 函数没有返回值时,默认返回 undefined
null 典型用法是:
- 1. 作为函数的参数,表示该函数的参数不是对象
- 2. 作为对象原型链的终点