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 相关文章推荐
javascript实现跳转菜单的具体方法
Jul 05 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
Jan 26 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
Apr 02 Javascript
javascript设置连续两次点击按钮时间间隔的方法
Oct 28 Javascript
jquery validate表单验证的基本用法入门
Jan 18 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
Oct 14 Javascript
BootStrap网页中代码显示用法详解
Oct 21 Javascript
浅谈Angular中ngModel的$render
Oct 24 Javascript
prototype.js简单实现ajax功能示例
Oct 18 Javascript
深入研究React中setState源码
Nov 17 Javascript
Angular4编程之表单响应功能示例
Dec 13 Javascript
inquirer.js一个用户与命令行交互的工具详解
May 18 Javascript
详谈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
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
php图片裁剪函数
2018/10/31 PHP
php经典趣味算法实例代码
2020/01/21 PHP
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
Bootstrap精简教程
2015/11/27 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
express 项目分层实践详解
2018/12/10 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
酒店优秀员工事迹材料
2014/06/02 职场文书
预防传染病方案
2014/06/14 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
教师岗位职责范本
2015/04/02 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
python实现简单石头剪刀布游戏
2021/10/24 Python
宝塔更新Python及Flask项目的部署
2022/04/11 Python