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 相关文章推荐
Exitjs获取DataView中图片文件名
Nov 26 Javascript
JS方法调用括号的问题探讨
Jan 24 Javascript
JavaScript获取某年某月的最后一天附截图
Jun 23 Javascript
javascript强制点击广告的方法
Feb 06 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
Mar 05 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
May 12 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
Aug 02 Javascript
基于jQuery实现淡入淡出效果轮播图
Jul 31 Javascript
AngularJS 与百度地图的结合实例
Oct 20 Javascript
详解微信小程序审核不通过的解决方法
Jan 17 Javascript
JQuery表单元素取值赋值方法总结
May 12 jQuery
vue 动态生成拓扑图的示例
Jan 03 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
mayfish 数据入库验证代码
2010/04/30 PHP
PHP中soap的用法实例
2014/10/24 PHP
php实现简单文件下载的方法
2015/01/30 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
php技巧小结【推荐】
2017/01/19 PHP
php分页查询的简单实现代码
2017/03/14 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
简析Python的闭包和装饰器
2016/02/26 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
python文件排序的方法总结
2020/09/13 Python
python动态规划算法实例详解
2020/11/22 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
高考自主招生自荐信
2013/10/20 职场文书
网络维护中文求职信
2014/01/03 职场文书
预备党员的自我评价
2014/03/12 职场文书
求职个人评价范文
2014/04/09 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS