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。

时间: 2024-10-11 11:20:35

typeof知多少的相关文章

JavaScript 中 typeof 知多少?

typeof运算符介绍:typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型.它返回值是一个字符串,该字符串说明运算数的类型. 你知道下面typeof运算的结果吗? typeof(1);typeof(NaN);typeof(Number.MIN_VALUE);typeof(Infinity);typeof("123");typeof(true);typeof(window);typeof(document);typeof(null);typeof(eval);type

JavaScript中typeof知多少?

typeof运算符介 绍:typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型.它返回值是一个字符串,该字符串说明运算数的类型. 你 知道下面typeof运算的结果吗? typeof(1);typeof(NaN);typeof(Number.MIN_VALUE);typeof(Infinity);typeof("123");typeof(true);typeof(window);typeof(document);typeof(null);typeof(eval);ty

FineUI(专业版)实现百变通知框(无JavaScript代码)!

曾经,有网友抱怨FineUI中连个通知框都没有,当用户进行某个操作成功时给个右下角的提示很不方便. 强大的设置参数 现在,FineUI(专业版)提供了强大的通知框机制,一个小小的通知框居然有多达 16 种不同的设置,可见威力之强大. 下面通过一张图片来简单概括一下: 1. 模式或者非模式对话框2. 消息图标可显示(消息.警告.问题.错误.成功),也可隐藏3. 正在加载图片可显示隐藏4. 消息正文可自定义5. 对话框标题可自定义6. 关闭图标可显示隐藏7. 标题栏可拖动8. 标题栏可隐藏9. 弹出

typeof

typeof运算符作为其参数的任何类型的system.Type对象,可以了解类型 的特征.typeof运算符返回已知类型的system.Type对象.

知乎控件分享(一)

最近知乎终于更新到了正式版,所以接下来的一段时间我会陆续分享一些知乎中用到的代码片段和控件,希望对UWP开发者有所帮助. 今天先来分享一个Pivot吧! 你肯定想,Pivot还用你说啊!不要着急各位先看清楚状况! 在已知的UWP应用中只是看到了网易云音乐中使用了类似的效果,接下来我们一步步的实现这个控件. 先来分析下这个控件, 首先是PivotItem宽度=屏幕宽度/Items.Count 后就是白色的Indicator可以实时响应滑动的距离 然后处理一下边界就可以了 好的,接下来我们创建一个T

有没有不适合使用flex/lex作为词法分析器的语言?(摘自知乎)

本问题及解答摘自本人知乎 http://www.zhihu.com/people/chaos-xie   http://www.zhihu.com/question/29922657 感谢知乎网友的回答!现将问题及可能的解答记录如下: 有没有不适合使用flex/lex作为词法分析器的语言? O'REILLY <flex和bison(中文版)>第24面问题5.求指点!我个人认为词法分析既然是把输入流分割成为一个个有意义的记号(参见龙书),而只要是程序设计语言肯定就能分割成为有意义的记号(不然人类

推断js中的类型:typeof / instanceof / constructor / prototype

怎样推断js中的类型呢,先举几个样例: var a = "jason"; var b = 123; var c = true; var d = [1,2,3]; var e = new Date(); var f = function(){ alert('jason'); }; 一.最常见的推断方法:typeof typeof是一个一元运算符,它返回的结果始终是一个字符串,对不同的操作数,它返回不同的结果,另外typeof能够推断function的类型:在推断除Object类型的对象时

我希望自己尽早知道的 7 个 JavaScript 怪癖(转载oschina)

如果对你来说JavaScript还是一门全新的语言,或者你是在最近的开发中才刚刚对它有所了解,那么你可能会有些许挫败 感.任何编程语言都有它自己的怪癖(quirks)--然而,当你从那些强类型的服务器端语言转向JavaScript的时候 ,你会感到非常困惑.我就是这样!当我在几年前做全职JavaScript开发的时候,我多么希望关于这门语言的许多事情我能尽早地知道.我希望通过本文中分享的一些怪癖能让你免于遭受我所经历过的那些头疼的日子.本文并非一个详尽的列表,只是一些取样,目的是抛砖引玉,并且让

一篇知乎的故事 - javascript技术贴

前言 就像文章题目所示,本文的发表源于知乎的一篇文章.文章链接如下:如果你想靠前端技术还房贷,你不能连这个都不会.这篇文章是群里水群时别人发的,像我这样的菜鸟角色才不会逛知乎~~~.这篇文章主要是讲了一个面试官面试前端的一个他自己的感触,作者生动形象(这个词中学语文哪个试卷没写过?)的描述了当下的前端开发者的水平低低低,当然不是说我们水平低,是他面试的那些人的水平..他在文章的两个题,我觉得第二个还是很有意思的,由此发此文章. 题外话:昨天晚上被老板深深的训斥了,表示我太懒了,不动脑子不积极作业