- 浏览: 453655 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (377)
- Java (66)
- C++ (0)
- VC++ (0)
- .net (1)
- css (36)
- 数据库 (22)
- html (2)
- extjs (1)
- jpbm (0)
- javascript (31)
- 物资管理 (1)
- java基础 (5)
- C# (0)
- Android (56)
- window service (1)
- 其他 (2)
- Web服务器 (7)
- jbpm (1)
- eclipse (2)
- tomcat (3)
- java字符串与二进制的相互转化 (1)
- Oracle 数据库 (6)
- FreeMarker (8)
- 浏览器 (1)
- php (1)
- photoshop (6)
- spring (4)
- spring mvc (2)
- Acegi (1)
- webStorm 3.0 (4)
- Mongodb (8)
- mysql (9)
- 软件开发:需求分析 (1)
- 把Java程序作为Windows系统服务 (1)
- nodejs (4)
- json (1)
- 缓存 (1)
- J2ee (2)
- Flash报表 (1)
- MyEclipse+Maven+Tomcat (11)
- 生活 (1)
- Ubuntu (1)
- Bootstrap (1)
- jquery easy ui (2)
- 敏捷开发 (1)
- phone gap (1)
- rest (1)
- 移动开发 (22)
- Redis + Jedis + Spring (3)
- anroid (7)
- grunt 教程 (7)
- PhoneGap (2)
- sublime text (7)
- mariadb (1)
- linux (1)
- maven (2)
- jquery (1)
- ActiveMQ (1)
- LVS Nginx (1)
- nginx (6)
- ngnix (1)
- 爱因斯坦 (1)
- 天干地支 (1)
最新评论
-
muqingren:
...
Maven多模块布局实例详解 -
shutear:
解决了我的难题,谢谢分享!
Unable to load configuration. - action - file:/D:/studytool/apache-tomcat-6.0.16 -
702346318:
[img][/img][flash=200,200][/fla ...
CAS单点登录完整教程(上)【转】 -
liuguofeng:
PersonS631887934 写道学习中。。 有个问题想请 ...
js constructor属性 -
S631887934:
学习中。。 有个问题想请教楼主为什么要加上Person.pro ...
js constructor属性
在JavaScript开发中,被人问到:null与undefined到底有啥区别?
一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理。于是,细想之后,写下本文,请各位大侠拍砖。
总所周知:null == undefined
但是:null !== undefined
那么这两者到底有啥区别呢?
请听俺娓娓道来...
null
这是一个对象,但是为空。因为是对象,所以 typeof null 返回 'object' 。
null 是 JavaScript 保留关键字。
null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正确的数值:
表达式:123 + null 结果值:123
表达式:123 * null 结果值:0
undefined
undefined是全局对象(window)的一个特殊属性,其值是未定义的。但 typeof undefined 返回 'undefined' 。
虽然undefined是有特殊含义的,但它确实是一个属性,而且是全局对象(window)的属性。请看下面的代码:
alert('undefined' in window); //输出:true
alert(undefined in window); //输出:true
var anObj = {};
alert('undefined' in anObj); //输出:false
从中可以看出,undefined是window对象的一个属性,但却不是anObj对象的一个属性。
注意:尽管undefined是有特殊含义的属性,但却不是JavaScript的保留关键字。
undefined参与任何数值计算时,其结果一定是NaN。
随便说一下,NaN是全局对象(window)的另一个特殊属性,Infinity也是。这些特殊属性都不是JavaScript的保留关键字!
提高undefined性能
当我们在程序中使用undefined值时,实际上使用的是window对象的undefined属性。
同样,当我们定义一个变量但未赋予其初始值,例如:
var aValue;
这时,JavaScript在所谓的预编译时会将其初始值设置为对window.undefined属性的引用,
于是,当我们将一个变量或值与undefined比较时,实际上是与window对象的undefined属性比较。这个比较过程中,JavaScript会搜索window对象名叫‘undefined'的属性,然后再比较两个操作数的引用指针是否相同。
由于window对象的属性值是非常多的,在每一次与undefined的比较中,搜索window对象的undefined属性都会花费时间。在需要频繁与undefined进行比较的函数中,这可能会是一个性能问题点。因此,在这种情况下,我们可以自行定义一个局部的undefined变量,来加快对undefined的比较速度。例如:
function anyFunc()
{
var undefined; //自定义局部undefined变量
if(x == undefined) //作用域上的引用比较
while(y != undefined) //作用域上的引用比较
};
其中,定义undefined局部变量时,其初始值会是对window.undefined属性值的引用。新定义的局部undefined变量存在与该函数的作用域上。在随后的比较操作中,JavaScript代码的书写方式没有任何的改变,但比较速度却很快。因为作用域上的变量数量会远远少于window对象的属性,搜索变量的速度会极大提高。
这就是许多前端JS框架为什么常常要自己定义一个局部undefined变量的原因!
原著:李战(leadzen).杭州-阿里软件 2009-2-18
原址:http://blog.csdn.net/leadzen/archive/2009/02/17/3899392.aspx
发表评论
-
Array.prototype.slice.call
2014-11-01 15:18 772在研究某个框架源码的时候,看到的。查了下资料,1.两个部分, ... -
深入理解jQuery插件开发
2014-11-01 12:17 513如果你看到这篇文章,我确信你毫无疑问会认为jQuery是一个 ... -
jquery 控制能输入数字和字母
2014-10-18 15:37 722内容",而"禁用输入法,获取剪切板的内 ... -
值得收藏的新jQuery插件
2014-09-25 22:39 7431) slideshow Really Simple S ... -
窗口大小 window.innerWidth 、window.innerHeight、document.documentElement.clientWidth、
2014-07-27 09:52 927/ Firefox、Chrome、Safari、Opera ... -
精选在线课程:前端开发入门、进阶与实战(中文系列)
2014-07-26 22:06 0在线教育的浪潮吸引了越来越多的网站加入,争相推出各种课程吸引 ... -
浏览器缓存机制
2014-07-26 13:19 672浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如: ... -
JavaScript中双叹号“!!”作用
2014-07-25 23:20 503经常看到这样的例子: var a;var b=!!a; ... -
js中style,currentStyle和getComputedStyle的区别
2014-07-13 09:51 792<style> body{margin:0 a ... -
JS OffsetParent属性
2014-06-14 11:12 692offsetParent属性返回一个对象的引用,这个对象 ... -
javascript两行代码按指定格式输出日期时间
2014-05-11 14:33 661// <summary>// 格式化显示日期时间/ ... -
Js中sort()方法的用法
2012-10-12 11:25 1113关键字: sort, 排序方 ... -
网页常用特效整理
2012-04-21 17:37 9601.节日倒计时 < ... -
jquery validate自定义验证方法(转)
2012-03-30 10:55 1072// 身份证号码验证 jQuery.validator ... -
document.documentElement和document.body的区别
2012-03-13 12:00 817网页中获取滚动条卷去部分的高度,可以通过 document.b ... -
document.compatMode属性
2012-03-13 11:58 947document.compatMode用来判断当前浏览器采 ... -
js库建设方案
2012-03-13 11:58 1093前言: 自从互联网诞生之日起,JavaScript就成为 ... -
关于scrolltop 兼容 IE6/7/8, Safari,FF的方法
2012-03-13 11:57 22171、各浏览器下 scrollTop的差异IE6/7/8 ... -
IE内存泄露监测工具 sIEve介绍
2012-03-08 10:23 1285在IE下监控页面内存资 ... -
网站优化之Ajax优化及相关工具
2012-03-08 09:56 1023web2.0大量的ajax的使用,提高了ui交互的效率,但 ...
相关推荐
JavaScript中undefined和null的区别 JavaScript两个表示”无”的值:undefined和null。我在平时只是null用的多一点,undefined只是在报错中经常遇到。下面针对这两个数据类型的异同做一下详细的比较。 1.undefined和...
JavaScript中Null与Undefined的区别解析主要涉及两种特殊数据类型:Null和Undefined。这两种类型是JavaScript中的原始类型,它们经常会使开发者混淆,尤其是在变量的赋值和比较操作中。本文将通过多个实例,详细解释...
在JavaScript(JS)编程中,`undefined` 和 `null` 是两种不同的特殊值,它们各自表示不同的含义。理解和正确地判断这两个值对于编写健壮的JavaScript代码至关重要。在这篇文章中,我们将深入探讨如何在JavaScript中...
在 JavaScript 中,每个变量都有一个类型,当变量未初始化或引用的对象不存在时,就会出现 `undefined` 或 `null`。 `undefined` 主要表示变量已声明但未赋值的情况。例如: ```javascript var test; // undefined ...
在JavaScript编程语言中,`undefined`和`null`是两种不同的数据类型,它们虽然在某些情况下可能被视为等价,但有着本质的区别。了解这两者的差异对于编写健壮的JavaScript代码至关重要。 首先,`undefined`是一种...
一些人反对直接使用undefined变量进行比较,因为在旧的浏览器中允许它的值被重新赋值,比如下面这样: undefined = "test" 在被重新赋值后,使用undefined指令将不能正确的检测一个变量是否被赋值。 不过,这个行为...
在JavaScript编程语言中,`null` 和 `undefined` 是两个重要的概念,它们都用来表示某种“不存在”或“没有”的状态,但它们之间存在着微妙的差异。了解这些差异对于编写健壮的JavaScript代码至关重要。 首先,`...
== undefined 那么这两者到底有啥区别呢? null 这是一个对象,但是为空。因为是对象,所以 typeof null 返回 ‘object’ 。 null 是 JavaScript 保留关键字。 null 参与数值运算时其值会自动转换为 0 ,因此,下列...
在JavaScript编程语言中,`undefined` 和 `null` 是两种特殊的值,它们在某些方面具有相似性,但也存在明显的差异。这两个概念对于理解和编写健壮的JavaScript代码至关重要,特别是对于那些处理变量状态和数据类型的...
本文将详细介绍javascript中的undefined和null 历史原因 1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示”无”的值。根据C语言的传统,null被设计成可以自动转为0 但是,JavaScript的设计者...
在JavaScript编程语言中,了解和正确使用数据类型是非常重要的,特别是`typeof`操作符、`null`和`undefined`这三个概念。它们在处理变量和数据时起着关键作用。 `typeof`操作符: `typeof`是JavaScript中的一个一元...
在JavaScript编程语言中,Undefined和null是两个基本数据类型,虽然它们听起来很相似,但实际上它们有着明显的区别。Undefined类型表示一个变量已声明但未被初始化,而null类型则表示一个空对象指针。接下来,我将...
在JavaScript编程中,正确理解和获取`undefined`值是至关重要的,因为这直接影响到代码的健壮性和可维护性。在某些情况下,我们可能需要确保一个变量确实为`undefined`,而不是其他任何值,以进行有效的条件检查。...
JavaScript作为全球最广泛使用的脚本语言之一,它在网页开发、服务器端编程、移动应用、游戏开发等多个领域都有广泛应用。这本书通过丰富的实例,帮助读者深入理解JavaScript的核心概念和技术,从而能够独立进行Web...
- `undefined` 和 `null` 在进行相等比较(`==`)时被认为是相等的,但它们与 `NaN` 不相等。 - `NaN` 与其他任何值,包括它自身,进行相等比较时都返回 false,这是因为 `NaN` 的特性决定了它不等于任何值,包括...
1. 变量与数据类型:了解JavaScript中的var、let和const声明变量的方式,以及五种基本数据类型(字符串、数字、布尔、null和undefined)和复杂数据类型(对象和数组)。 2. 运算符:学习各种运算符,包括算术、比较...
在《JAVASCRIPT驱动开发小教程》中,KISSY团队详细介绍了如何利用JavaScript进行高效稳定的开发工作,特别是针对跨浏览器兼容性问题提出了有效的解决方案。本文将深入探讨教程中的关键知识点,包括测试策略、单元...