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 二维数组
Nov 26 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
Sep 03 Javascript
javascript动态修改Li节点值的方法
Jan 20 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
Mar 06 Javascript
学习JavaScript设计模式(代理模式)
Dec 03 Javascript
详解javascript跨浏览器事件处理程序
Mar 27 Javascript
浅析Visual Studio Code断点调试Vue
Feb 27 Javascript
用Node提供静态文件服务的方法
Jul 06 Javascript
详解vue中axios的封装
Jul 18 Javascript
jQuery选择器之层次选择器用法实例分析
Feb 19 jQuery
tweenjs缓动算法的使用实例分析
Aug 26 Javascript
Angular+ionic实现折叠展开效果的示例代码
Jul 29 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
Python发展简史 Python来历
2019/05/14 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
公立医院改革实施方案
2014/03/14 职场文书
年会搞笑主持词
2014/03/27 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python
Mysql中mvcc各场景理解应用
2022/08/05 MySQL