TypeOf这些知识点你了解吗


Posted in Javascript onFebruary 21, 2016

昨天给同事一起玩耍,同事给我出了一道代码题目,是关于typeof的,感觉挺好玩的,在此分享给大家,顺便巩固下自己对typeof知识点的总结。如有不对,请给予指出,共同进步。

代码是这样的:

<!DOCTYPE html>
<head>
<title>typeof</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
<script>
var a= a||null; 
var b= c||null; 
var c= typeof f;
console.log(a);
console.log(b);
console.log(c);
</script>
</body>
</html>

那么,你说运行该代码,chrome调试器会打印什么呢?

请看,效果图

为什么会出现这个结果呢?

首先分析上图中的两个null

因为Javascript在执行代码之前,会先预解析(hoisting)。

什么是预解析(hoisting)呢?

就是在JavaScript中,你可以在函数的任何位置声明多个var语句,它们就像在函数的顶部声明一样发挥作用,且会给var声明的变量赋予一个undefined的初始值。这种行为我们称之为预解析(hoisting)。

所以呢,在执行以上代码前,Javascript会首先将所有的var变量(a,b,c)预解析(hoisting),当执行a||null时,a是undefined的,又因为是||运算,所以结果就是null咯。

c||null是一个道理。

再来看看,为什么typeof f会是undefined呢?f都没定义,不应该会报错吗?

是的,倘若我们去使用一个未定义的变量,浏览器是会报错的。

但是,当用typeof去判断一个未定义的变量,将返回undefined。

那typeof判断值类型时,是个怎么机制呢?总结如下:

1、 对于数字类型的值,typeof会返回number,注意:NaN也是一个数字类型,因为它在JavaScript中代表的是特殊非数字值。

2、 对于字符串类型的值,typeof会返回string。

3、 对于布尔类型的值,typeof会返回boolean。

4、 对于对象,数组,null而言,typeof会返回object

5、 对于函数类型而言,typeof返回function

6、 如果运算数没有定义(不存在或未赋值),将会返回undefined。

Javascript 相关文章推荐
URI、URL和URN之间的区别与联系
Dec 20 Javascript
jquery选择器大全 全面详解jquery选择器
Mar 06 Javascript
jQuery动画效果animate和scrollTop结合使用实例
Apr 02 Javascript
JavaScript中的ArrayBuffer详细介绍
Dec 08 Javascript
jQuery插件jRumble实现网页元素抖动
Jun 05 Javascript
javascript中Array()数组函数详解
Aug 23 Javascript
搭建Bootstrap离线文档的方法
Dec 02 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
Oct 26 Javascript
video.js 实现视频只能后退不能快进的思路详解
Aug 09 Javascript
angularjs $http调用接口的方式详解
Aug 13 Javascript
angularJs在多个控制器中共享服务数据的方法
Sep 30 Javascript
Vue+TypeScript中处理computed方式
Apr 02 Vue.js
详谈javascript异步编程
Feb 21 #Javascript
浅谈javascript的call()、apply()、bind()的用法
Feb 21 #Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
Feb 21 #Javascript
javascript+HTML5自定义元素播放焦点图动画
Feb 21 #Javascript
JavaScript编程学习技巧汇总
Feb 21 #Javascript
Node.js开发者必须了解的4个JS要点
Feb 21 #Javascript
JSON简介以及用法汇总
Feb 21 #Javascript
You might like
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
Javascript 继承实现例子
2009/08/12 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
[03:11]TI9战队档案 - Alliance
2019/08/20 DOTA
python映射列表实例分析
2015/01/26 Python
python实现矩阵打印
2019/03/02 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
详解Python用户登录接口的方法
2019/04/17 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
Python换行与不换行的输出实例
2020/02/19 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
关于递归的一道.NET面试题
2013/05/12 面试题
条幅标语大全
2014/06/20 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
励志演讲稿200字
2014/08/21 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
小学科学教学计划
2015/01/21 职场文书
公司文体活动总结
2015/05/07 职场文书
小学运动会前导词
2015/07/20 职场文书
毕业班工作总结
2015/08/10 职场文书
微信早安问候语
2015/11/10 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
Python数据分析之绘图和可视化详解
2021/06/02 Python
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript