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 相关文章推荐
一个可以兼容IE FF的加为首页与加入收藏实现代码
Nov 02 Javascript
JavaScript flash复制库类 Zero Clipboard
Jan 17 Javascript
统计jQuery中各字符串出现次数的工具
May 03 Javascript
js+数组实现网页上显示时间/星期几的实用方法
Jan 18 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
Sep 27 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 Javascript
Vue组件tree实现树形菜单
Apr 13 Javascript
ionic实现下拉刷新载入数据功能
May 11 Javascript
ionic+html5+API实现双击返回键退出应用
Sep 17 Javascript
基于JS实现简单滑块拼图游戏
Oct 12 Javascript
vue中的.$mount('#app')手动挂载操作
Sep 02 Javascript
react ant Design手动设置表单的值操作
Oct 31 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
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
基于jquery的商品展示放大镜
2010/08/07 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
python检测是文件还是目录的方法
2015/07/03 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
Python格式化输出%s和%d
2018/05/07 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
详解python中index()、find()方法
2019/08/29 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
康拓普公司Java笔面试
2016/09/23 面试题
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
公司承诺书格式
2014/05/21 职场文书
员工教育培训协议书
2014/09/27 职场文书
大学生助学金感谢信
2015/01/21 职场文书
企业投资意向书
2015/05/09 职场文书
体育教师研修感悟
2015/11/18 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
nginx配置指令之server_name的具体使用
2022/08/14 Servers