关键词:
昨天同事给我看了一道代码题,是关于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。
事件总线知多少
ImplementinganeventbuswithRabbitMQforthedevelopmentortestenvironmentAbpEventBus 查看详情
网页制作知多少
网页制作知多少一、通用模板:<!DOCTYPEhtml><htmllang=”en”> <head> <meta charset=”UTF-8”/> &nb 查看详情
unitofwork知多少(代码片段)
原文链接:https://www.cnblogs.com/sheng-jie/p/7416302.html1.引言Maintainsalistofobjectsaffectedbyabusinesstransactionandcoordinatesthewritingoutofchangesandtheresolutionofconcurrencyproblems.UnitofWork 查看详情
overflow知多少
本文地址: http://www.hicss.net/some-overflow-knowledge/最近在研究OOCSS,当打开template.css阅读第一行时,震惊了,第一眼居然没看懂。。。。。。以下就是OOCSS下的template.css第一行代码:12.body{overflow:hidden;_overflow:visible;_zoom:1;}.main{overflo 查看详情
产品开发知多少一
为什么要进行产品开发?1.市场需求使然,获取商业价值;2.公司战略需要,为公司的战略目标打基础;3.技术发展需求,做公司核心技术积累;开发产品依据?1.企业目标2.战略部署3.技术积累4.市场需求组织中谁来进行产品开发... 查看详情
ffmpeg知多少~~~
一、ffmpeg安装:https://jingyan.baidu.com/article/f7ff0bfcd64cea2e26bb1334.html 二、ffmpeg视频处理(包括各种视频流处理~):三、ffmpeg推流步骤:1)通过ffmpeg截取指定长度的视频流:ffmpeg-t10-irtsp://xxx:xxxxx1234@172.20.xx.xxx:55410s_out 查看详情
__attribute__你知多少(代码片段)
__ATTRIBUTE__你知多少?GNUC 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(FunctionAttribute )、变量属性(VariableAttribute )和类型属性(TypeAttribute )。__attribute__ 书写特征是:__attribu 查看详情
射频&天线设计-db知多少
《射频&天线设计-dB知多少》在调试射频输出功率时经常听到“相差多少dB”,刚入门的话听得一脸懵逼,当然这种通俗单位别人也懒得跟你解释。分贝(dB)是一个对数单位(logarithmicunit),最初用... 查看详情
射频&天线设计-db知多少
《射频&天线设计-dB知多少》在调试射频输出功率时经常听到“相差多少dB”,刚入门的话听得一脸懵逼,当然这种通俗单位别人也懒得跟你解释。分贝(dB)是一个对数单位(logarithmicunit),最初用... 查看详情
玩转springboot原理篇(核心注解知多少)(代码片段)
type=FilterType.CUSTOM,classes=TypeExcludeFilter.classtype=FilterType.CUSTOM,classes=AutoConfigurationExcludeFilter.classSpringBootApplicationSpringBootConfigurationComponentScanEnableAutoConfiguratio 查看详情
电磁屏蔽知多少?
原文来自公众号:工程师看海不管什么电子产品,EMC始终是其需要面对的问题,EMC全拼是ElectromagneticCompatibility即电磁兼容性,EMC分为EMS(electromagneticsusceptibility)电磁抗扰度和EMI(Electromagneticinterfere 查看详情
overflow知多少(转)
最近在研究OOCSS,当打开template.css阅读第一行时,震惊了,第一眼居然没看懂。。。。。。以下就是OOCSS下的template.css第一行代码:12.bodyoverflow:hidden;_overflow:visible;_zoom:1;.mainoverflow:hidden;_overflow:visible;_zoo 查看详情
第一讲测试知多少
1.1计算机基础1.1.1计算机相关定义◆软件和硬件:软件:当电脑启动时的应用程序,应用软件(腾讯,qq,有道云,有道翻译)、系统、网页、驱动(看得见、摸不着)硬件:计算机的硬件是计算机的各种设备的总称,分为五个... 查看详情
css知多少(11)——position
1.引言 本文将用一篇文章介绍position(定位),在学习position之前,我们应该去思考一个问题:什么情况下我们需要定位?如果没有定位将无法满足我们怎样的需求?我们要知道,被人类创造出来的每一个知识,都有它的用途... 查看详情
css知多少——选择器的优先级(转)
1.引言 上一节《css知多少(5)——选择器》最后提到,选择器类型过多将导致一些问题,是什么问题呢?咱们直接举例子说明。 上图中,css中的两个选择器都是针对<span>的,而且两个设置的颜色不一样,这里的... 查看详情
开发趋势:快速开发平台知多少?
开发趋势:快速开发平台知多少? 一、什么是快速开发平台 简而言之,就是可以使得开发更为快速的平台。当开发平台产生之后,虽然减少了编程人员大量的编程时间,但是很多开发平台的效果并不是很理想,比... 查看详情
css知多少(10)——display(转)
1.引言 网页的所有元素,除了“块”就是“流”,而且“流”都是包含在“块”里面的(最外层的body就是一个“块”)。在本系列一开始讲《浏览器默认样式》的时候,大家也都看到了浏览器默认样式中规定了html元素哪些... 查看详情
应用营销策略知多少?
作者:坚果华为云享专家,InfoQ签约作者,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括Flutter,小程序,安卓,VUE,JavaScript。认为只有使用应用程... 查看详情