TypeOf这些知识点你了解吗
代码趣题:JavaScript中的`typeof`
昨天与同事一同玩耍时,他给我出了一道关于`typeof`的代码题目,感觉既有趣又富有挑战性。在此,我愿意与大家分享这个知识点,并借此机会巩固下自己对`typeof`的理解。欢迎大家共同交流,如果有误,请多多指正。
以下是那段引发我们讨论的HTML代码:
```html
var a = a || null; // 预后a会被初始化为null
var b = c || null; // 由于c未定义,这里b也会被初始化为null
var c = typeof f; // 判断变量f的类型,但f未定义,所以结果是undefined
console.log(a); // 输出null
console.log(b); // 输出null
console.log(c); // 输出undefined
```
那么,为什么会出现这样的结果呢?这背后涉及到了JavaScript的预(Hoisting)机制。在执行代码之前,JavaScript会先将所有的变量声明(通过var关键字)提升到当前作用域的顶部。尽管变量a和b在逻辑判断前并未被明确赋值,但在预后,它们都会被初始化为undefined。由于使用了“||”运算符,这些变量最终都被赋值为null。而变量c则是因为f未定义,所以通过typeof判断后得到的结果是undefined。
关于`typeof`的机制,我们可以这样理解:
1. 对于数字类型的值,`typeof`会返回`number`。值得注意的是,NaN作为一个特殊的非数字值,也是数字类型。
2. 对于字符串类型的值,`typeof`会返回`string`。
3. 对于布尔类型的值,`typeof`会返回`boolean`。
4. 对于对象、数组以及null,`typeof`会返回`object`。
5. 对于函数类型,`typeof`会返回`function`。
6. 如果运算数未定义(不存在或未赋值),`typeof`会返回`undefined`。
这个题目不仅有趣,而且帮助我们深入理解了JavaScript的预机制和`typeof`的用法。希望这个分享能对大家有所帮助,让我们一起在编程的道路上共同进步。
编程语言
- TypeOf这些知识点你了解吗
- PHP通过引用传递参数用法分析
- 用JS让文章内容指定的关键字加亮
- angular route中使用resolve在uglify压缩后问题解决
- SQLSERVER 根据地图经纬度计算距离差示例
- ASP万用分页程序
- js 自带的 map() 方法全面了解
- javascript中call apply 的应用场景
- .net 应对网站访问压力的方案总结
- 动态生成的DOM不会触发onclick事件的原因及解决方
- PHP mkdir()无写权限的问题解决方法
- GridView的CheckBox列选择及多参数传递三步搞定
- node.js中module.exports与exports用法上的区别
- 微信小程序实现笑脸评分功能
- 有关easyui-layout中的收缩层无法显示标题的解决办
- 2种简单的js倒计时方式