TypeOf这些知识点你了解吗

 更新时间:2016年02月21日 17:17:22   投稿:mrr  
昨天给同事一起玩耍,同事给我出了一道代码题目,是关于typeof的,感觉挺好玩的,在此分享给大家,顺便巩固下自己对typeof知识点的总结

昨天给同事一起玩耍,同事给我出了一道代码题目,是关于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闭包的简单应用

    这篇文章主要为大家详细介绍了JavaScript闭包的简单应用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 微信小程序实现上传多张图片、删除图片

    微信小程序实现上传多张图片、删除图片

    这篇文章主要为大家详细介绍了微信小程序实现上传多张图片、删除图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • js 屏蔽鼠标右键脚本附破解方法

    js 屏蔽鼠标右键脚本附破解方法

    用来屏蔽鼠标右键的代码,破解方法也比较简单。比较根本。禁掉js什么也运行不了。
    2009-12-12
  • html嵌入javascript代码的三种方式

    html嵌入javascript代码的三种方式

    本文详细介绍了html嵌入javascript代码的三种主要方式:脚本块的方式、引入外部独立的.js文件、事件句柄是以html标签的属性存在的,有感兴趣了解的同学可以借鉴阅读
    2023-03-03
  • 一些相见恨晚的 JavaScript 技巧

    一些相见恨晚的 JavaScript 技巧

    本文从7个方面讲述 JavaScript 中那些你不很熟知但非常实用的技巧。
    2010-04-04
  • 用js来格式化字符串示例模仿css

    用js来格式化字符串示例模仿css

    用js来格式化字符串示例模仿css...
    2007-04-04
  • 基于微信小程序实现透明背景人像分割功能

    基于微信小程序实现透明背景人像分割功能

    这篇文章主要介绍了基于小程序实现透明背景人像分割,此文主要实现识别人体的轮廓范围,与背景进行分离并保存效果图,适用于拍照背景替换及透明背景的人像图(png格式)转换,需要的朋友可以参考下
    2022-10-10
  • 微信小程序实现tab切换效果

    微信小程序实现tab切换效果

    这篇文章主要为大家详细介绍了微信小程序实现tab切换效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • SVG动画vivus.js库使用小结(实例代码)

    SVG动画vivus.js库使用小结(实例代码)

    本文通过代码给大家介绍SVG动画vivus.js库使用小结,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-09-09
  • JavaScript中引用vs复制示例详析

    JavaScript中引用vs复制示例详析

    这篇文章主要给大家介绍了关于JavaScript中引用vs复制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12

最新评论