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 ajax同步异步的执行最终解决方案
Apr 26 Javascript
jquery列表拖动排列(由项目提取相当好用)
Jun 17 Javascript
js中数组排序sort方法的原理分析
Nov 20 Javascript
基于javascript制作经典传统的拼图游戏
Mar 22 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
May 03 Javascript
简单实现JS计算器功能
Dec 21 Javascript
原生Javascript插件开发实践
Jan 09 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
JavaScript注册时密码强度校验代码
Jun 30 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
Aug 06 Javascript
vue自定义指令实现方法详解
Feb 11 Javascript
vue实现从外部修改组件内部的变量的值
Jul 30 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
一个PHP操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
广告显示判断
2006/08/31 Javascript
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
Vuex提升学习篇
2018/01/11 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
python快速排序代码实例
2013/11/21 Python
python插入排序算法的实现代码
2013/11/21 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
简单了解Python中的几种函数
2017/11/03 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
医院实习介绍信
2014/01/12 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
反邪教警示教育方案
2014/05/13 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
部门2014年度工作总结
2014/11/12 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
2016学习依法治国心得体会
2016/01/15 职场文书
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS
Oracle中update和select 关联操作
2022/01/18 Oracle
python playwrigh框架入门安装使用
2022/07/23 Python