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 相关文章推荐
jQuery 使用个人心得
Feb 26 Javascript
JavaScript Konami Code 实现代码
Jul 29 Javascript
javascript校验价格合法性实例(必须输入2位小数)
May 05 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
Apr 15 Javascript
JavaScript中的splice()方法使用详解
Jun 09 Javascript
Javascript中this绑定的3种方法与比较
Oct 13 Javascript
JavaScript 计算笛卡尔积实例详解
Dec 02 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
Dec 24 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
layui前段框架日期控件使用方法详解
May 19 Javascript
Vue自定义render统一项目组弹框功能
Jun 07 Javascript
vue的项目如何打包上线
Apr 13 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
Drupal7中常用的数据库操作实例
2014/03/02 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
使用PHP开发留言板功能
2019/11/19 PHP
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
全面了解javascript三元运算符
2016/06/27 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
Python对数据库操作
2016/03/28 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
客服主管岗位职责
2013/12/13 职场文书
车间主任岗位职责
2014/03/16 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
项目合作意向书模板
2014/07/29 职场文书
职工食堂管理制度
2015/08/06 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android