【译】typeof null的前世今生】的更多相关文章

    更新时间2013-11-05:为了更好的解释为什么typeof null的结果是object,我看了一下C代码的实现(译者注:Javascript源码).       在Javascript语言中,typeof null的结果是object.这样就会错误的认为null是一个对象(事实上,它不是一个对象,它是原始值,详细的说明可以看我的发布的博客 Javascript中的数据类型 ).很不幸,它是一个不能修复的bug,因为修复后会破坏掉现有的代码.那么.让我们探索一下这个bug的起源吧.…
之前只知道typeof null = object,但是却从来不知道是为什么.最新查阅资料的时候,看到了这个原理,记录下来,方便自己以后查看. 原理是这样的,不同的对象在底层都表示为二进制,在 JavaScript 中二进制前三位都为 0 的话会被判断为 object 类型, null 的二进制表示是全 0,自然前三位也是 0,所以执行 typeof 时会返回“ object ”.  这个bug是第一版Javascript留下来的.在这个版本,数值是以32字节存储的,由标志位(1~3个字节)和数…
1997 年,IE 4.0 发布,带来的众多新特性中有一个对未来“影响深远”的 DOM API:document.all.在随后的 6 年里,IE 的市场占有率越来越高,直到 2003 年的 95%. 在这段时间里,产生了两种成千上万的页面.第一种:IE only 的页面,由于超高的市场占有率,开发人员觉得根本不需要考虑兼容性,于是直接使用 document.all,比如: document.all("foo").style.visibility = "visible&quo…
JavaScript 数据类型 在 JavaScript 中有 5 种不同的数据类型: string number boolean object function 3 种对象类型: Object Date Array 2 个不包含任何值的数据类型: null undefined 例子: typeof "John"                 // 返回 string typeof 3.14                   // 返回 numbertypeof NaN      …
typeof 操作符 你可以使用 typeof 操作符来检测变量的数据类型. 实例 typeof "John"                // 返回 string typeof 3.14                  // 返回 numbertypeof false                 // 返回 booleantypeof [1,2,3,4]             // 返回 objecttypeof {name:'John', age:34} // 返回 ob…
我的翻译小站:https://www.zcfy.cc/article/the-history-of-typeof-null 翻译原文链接:http://2ality.com/2013/10/typeof-null.html 更新2013-11-05:我发现用C语言能够很好的解释为什么typeof null 结果是'object'. 在JavaScript中,typeof null 是 'object',它错误地将null认为是对象(其实它不是,它是一个原始的值,详情可查询 categorizin…
原文 简书原文:https://www.jianshu.com/p/c1608452d056 前言 对象是 JavaScript 的基础.在 JavaScript 中一共有六种主要类型(术语是“语言类型”):string.number.boolean. null.undefined.object. 简单基本类型(string.boolean.number.null 和 undefined)本身并不是对象. null 有时会被当作一种对象类型,这是为什么呢?因为使用typeof null得到的结果…
java 中的 null:既是对象,又不是对象,史称「薛定谔的对象」. typeof null==='object';  ..//true null instanceof Object  //false nullinstanceofObject===false 而 null instanceof null 会抛出异常: UncaughtTypeError:Right-hand side of 'instanceof'isnotan object 这是一个历史遗留下来的 feature(or bu…
到目前为止,ECMAScript 标准中定义了8种数据类型,它们分别是Undefined.Null.Number.Boolean.String.Symbol.BigInt.Object. 为了判断变量的数据类型,JavaScript还提供了typeof操作符. 数据类型中的值通过typeof操作符操作过后输出的值对应表格: 数据类型 值 结果 Undefined undefined 'undefined' Null null 'object' Number 1.1.0.NaN.Infinity…
ECMAScript语言类型对应于使用ECMAScript语言的ECMAScript程序员直接操作的值.ECMAScript语言类型有以下几种Undefined,Null,Boolean,String,Symbol,Number和Object.ECMAScript语言值是以ECMAScript语言类型为特征的值. 如果你奇怪为什么这里没有写Function类型,并且把Null也当做一种类型,建议你看一下hax在知乎上的一个回答JavaScript 里 Function 也算一种基本类型? 简单说…
在JS里typeof 大家用的很多,可以使对于数组.对象和Null无法区分的问题,看了看犀牛书还是有解决办法的. document.writeln(typeof "abc"); //string document.writeln(typeof 123); //number document.writeln(typeof true); //boolean document.writeln(typeof eval); //function document.writeln(typeof […
目录 概述 null undefined typeof instanceof 概述 JavaScript(ECMAScript标准)里共有5种基本类型: undefined, null, Boolean, Number, String, 和一种复杂类型Object. JavaScript的设计者希望用null表示一个空的值,而undefined表示值未定义.事实证明,这并没有什么卵用,区分两者的意义不大.大多数情况下,我们都应该用null.undefined仅仅在判断函数参数是否传递的情况下有用…
参考自:http://www.cnblogs.com/wicub/p/3442891.html typeof 是运算符,注意不是函数,是运算符,其作用,是考察变量究竟是什么类型.或曰,是变量是否定义或是否初始化的照妖镜.返回值是字符串. undefined 表示一个对象没有被定义或者没有被初始化. null 表示一个尚未存在的对象的占位符. 首先做四个测试: //测试1: 变量没有定义时,只能使用typeof //console.log('a == undefined: ' + a == und…
7].break和continue /** * JavaScript 的break和continue语句 * break 跳出switch()语句 * break 用于跳出循环 * continue 用于跳过循环中的一个迭代*/ // break 跳出循环 for(var i = 0;i < 10;i++){ if(i == 3){ break; } console.log('The number is: ' + i); } // continue 跳过循环 for(var i = 0;i <…
typeof 是运算符,注意不是函数,是运算符,其作用,是考察变量究竟是什么类型.或曰,是变量是否定义或是否初始化的照妖镜.返回值是字符串. undefined 表示一个对象没有被定义或者没有被初始化. null 表示一个尚未存在的对象的占位符. 测试一,变量没有定义的时候,只能使用 typeof <input type="button" id="btnTest" onclick="Test()" value="测试"…
JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json对象转换成json对符串 在js使用中的一个函数typeof用法, typeof 运算符把类型信息当作字符串返回,包括有大家常有变量类型. typeof 运算符把类型信息当作字符串返回.typeof 返回值有六种可能: "number," "string," "boolean," "o…
您也许会问,为什么 typeof 运算符对于 null 值会返回 "Object".这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了.现在,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值. 对变量或值调用 typeof 运算符将返回下列值之一: undefined - 如果变量是 Undefined 类型的 boolean - 如果变量是 Boolean 类型的 number - 如果变量是 Number…
typeof操作符 null 在JavaScript中null表示“什么都没有”. null是一个只有一个值的特殊类型.表示一个空对象引用. typeof null; 返回的是object 可以将null赋值给引用类型对象,表示其不再指向任何空间,用于主动释放对象的空间 undefined 在JavaScript中undefined是一个没有设置值的变量. var p = undefined;  //值为undefined(空),类型是undefined. 可以为变量赋undefined,用来清…
参考链接:http://blog.csdn.net/qq_26676207/article/details/53100912 http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html http://www.tuicool.com/articles/b6vqmy 关于什么时候会出现null什么时候出现undefined: 这么答: 变量定义未赋值时是undefined,或者是typeof 一个定义为未赋值的变量或没有的定义的变量:…
Use instanceof for custom typesvar ClassFirst = function () {};var ClassSecond = function () {};var instance = new ClassFirst();typeof instance; // objecttypeof instance == 'ClassFirst'; //falseinstance instanceof Object; //trueinstance instanceof Cl…
本文将从以下几个方面介绍Js的typeof和Js的基本数据类型: ** Js的typeof的用法 ** Js的基本数据类型 ** 使用基本类型使用typeof的返回结果 ** Js的typeof的用法 ** typeof 运算符 返回一个用来表示表达式的数据类型的字符串. typeof[()expression[]] ; expression 参数是需要查找类型信息的任意表达式. 说明 typeof 运算符把类型信息当作字符串返回.typeof 返回值有六种可能: "number,"…
JavaScript 是一种弱类型或者说动态语言.这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定. 这也意味着你可以使用同一个变量保存不同类型的数据. 最新的 ECMAScript 标准定义了 7 种数据类型: 6种原始类型:Boolean.Null.Undefined.Number.String.Symbol (ECMAScript 6 新定义)和Object,除 Object 以外的所有类型都是不可变的(值本身无法被改变). 一.typeof typeof操作符返回一个…
delete.in.typeof.instanceof.void详解 本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript) delete delete 运算符用来删除对象的自有属性. 语法:delete expression expression 的计算结果应该是一个对象的属性引用,如果不是一个对象的属性引用,那么,delete不会起任何作用,直接返回true. 在严格模式中,如果属性…
在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理.于是,细想之后,写下本文,请各位大侠拍砖. 总所周知:null == undefined 但是:null !== undefined 那么这两者到底有啥区别呢? 请听俺娓娓道来... null 这是一个对象,但是为空.因为是对象,所以 typeof null  返回 'object' . null 是 JavaScript 保留关…
undefined是一个特殊类型,null本质上是一个对象 typeof undefined//"undefined"typeof null//"object" 什么情况会得到undefined?(1)声明变量但没赋值.(2) 函数的形参没传时,形参是.(3)对象中没赋值的属性.(4)函数没有返回值时,返回undefined 对象原型链的终点是null Object.getPrototypeOf(Object.prototype) // null…
undefined表示不存在的状态.没有定义的变量,没有定义的对象属性,没有return的函数的返回值等等都是undefined. null表示没有对象.使用上没有差别,只是根据大众的使用习惯,场合不一样. console.log(typeof null); // object console.log(typeof undefined); // undefined //声明一个变量,但是不赋值,既是null也是undefinedvar foo; console.log(foo === undef…
JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: typeof typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型. 它返回值是一个字符串,该字符串说明运算数的类型.typeof 一般只能返回如下几个结果: number,boolean,string,function,object,undefined.我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="un…
/** * * @authors Your Name (you@example.org) * @date 2016-11-18 09:31:23 * @version $Id$ */instanceof: 1.左操作数是一个对象,右操作数是标识对象的类,如果左侧的对象是右侧类的实例,则表达式返回true,否则返回false 2.如果左边的操作数不是对象,返回false 3.如果右边的操作数不是函数,抛出类型错误异常 4.在计算obj instanceof f 时, 会先计算f.prototype…
NaN:保留字(表明数据类型不是数字) undefined:对象属性或方法不存在,或声明了变量但从未赋值.即当你使用了对象未定的属性或者未定义的方法时或当你声明一个变量,但你确从未对其进行赋值,便对其进行操作(当然赋值除外),会有"undefined"提示null 值指出一个变量中没有包含有效的数据. 产生 null 的原因是:对一个变量显式地赋值为 null. 包含 null 的表达式之间的任何操作. Boolean 表达式一个值为 true 或者 false 的表达式.如果需要,非…
× 目录 [1]原因 [2]undefined [3]null 前面的话 一般的程序语言,表示空的只有null,但javascript的设计者Brendan Eich却设计了一个undefined,这无疑增加了程序复杂度,但这样做也是有一定原因的.本文将详细介绍javascript中的undefined和null 历史原因 1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示”无”的值.根据C语言的传统,null被设计成可以自动转为0 但是,JavaScript的设…