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 装载iframe子页面,自适应高度
Mar 20 Javascript
JS分割字符串并放入数组的函数
Jul 04 Javascript
CSS(js)限制页面显示的文本字符长度
Dec 27 Javascript
JS替换文本域内的回车示例
Feb 18 Javascript
Jquery中$.post和$.ajax的用法小结
Apr 28 Javascript
Jquery中基本选择器用法实例详解
May 18 Javascript
Javascript中prototype的使用详解
Jun 18 Javascript
JavaScript使用readAsDataURL读取图像文件
May 10 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 Javascript
vue使用微信扫一扫功能的实现代码
Apr 11 Javascript
vue cli4.0项目引入typescript的方法
Jul 17 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
Jul 28 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
PHP4引用文件语句的对比
2006/10/09 PHP
PHP XML操作类DOMDocument
2009/12/16 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
PHP中常用的魔术方法
2017/04/28 PHP
PHP CURL实现模拟登陆并上传文件操作示例
2020/01/02 PHP
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
Python Trie树实现字典排序
2014/03/28 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
HTML5的革新 结构之美
2011/06/20 HTML / CSS
如何开启linux的ssh服务
2015/02/14 面试题
你们项目是如何进行变更控制的
2015/08/26 面试题
大学生撤销处分思想汇报
2014/09/12 职场文书
营销与策划实训报告
2014/11/05 职场文书
2014年技术部工作总结
2014/12/12 职场文书
幼儿园六一主持词
2015/06/30 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫