- 浏览: 497687 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (301)
- Swing技术 (1)
- Linux (1)
- Javascript (22)
- 数据结构和算法 (3)
- J2SE (36)
- workflow (5)
- 设计模式 (14)
- web service (19)
- Ajax (14)
- 中间件 & 服务器 (8)
- 多线程 (9)
- Oracle (52)
- sys & soft (10)
- JMS (3)
- sso (9)
- android (11)
- struts2 (10)
- web协议 (2)
- 分布式 (2)
- PM (2)
- OLAP (3)
- Redis (2)
- Hibernate (7)
- ibatis (2)
- SQLServer (1)
- maven (3)
- Spring (7)
- Jsp (2)
- slf4j (1)
- jQuery (15)
- 权限 (1)
- 系统集成 (1)
- 笔记 (1)
- Freemarker (2)
- 项目管理 (1)
- eclipse (3)
- GIS (1)
- NoSql (3)
- win10 (1)
- win10网络 (2)
- 底层 (3)
- 数据库 (0)
最新评论
-
kabuto_v:
请问那种图,uml图是怎么画出来的呢?是您自己手工画的,还是有 ...
FastJSON 序列化、反序列化实现 -
梦行Monxin商城系统:
电商实例、业务并发、网站并发及解决方法 -
rockethj8:
client 㓟有一个参数是可以忽略一些URL 不进行验证登录 ...
SSO 之 (单点登录)实施中遇到的几个问题 -
mengxiangfeiyan:
好啊。。。。。
Oracle删除表,删除数据以及恢复数据、利用现有表创建新表
[size=small] 在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
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[/size]
一时间不好回答,特别是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
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[/size]
发表评论
-
js 之 页面定时跳转
2013-08-27 09:30 0http://blog.sina.com.cn/s/blog_ ... -
json eval
2013-08-17 10:31 0eval :https://developer.mozil ... -
IE8避免网页显示混乱
2012-11-23 09:45 1366IE8实现“超级标准模式”的事儿,IE开发团队为了让 ... -
windows弹出窗体
2012-11-12 21:27 879http://hi.baidu.com/ying ... -
JavaScript使用小技巧
2012-11-12 20:59 1047http://xuebinxu.blog.51cto. ... -
Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)
2012-11-12 00:46 814http://www.webshowme.com/04 ... -
Js中 关于top、clientTop、scrollTop、offsetTop的用法
2012-11-06 22:47 984http://hi.baidu.com/taom ... -
再谈Iframe的问题
2012-10-23 11:01 1102http://js8.in/638.html ... -
关于iFrame动态创建函数
2012-10-22 00:02 1461http://asers.blog.sohu.com/ ... -
1、javascript活跃博客和社区
2012-10-12 16:35 955javascript活跃博客和社区: 1、司徒正美 : ... -
javascript的domReady
2012-10-12 16:31 861http://www.cnblogs.com/ruby ... -
javascript控制样式
2012-10-09 23:30 863javascript,控制鼠标,如变成漏斗形式: &l ... -
JavaScript 创建类/对象的几种方式
2012-09-26 20:55 838http://blog.csdn.net/e ... -
js 刷新页面
2012-09-26 16:13 943Javascript刷新页面 ... -
JavaScript 和 Ajax 开发的最佳实践
2012-10-21 23:55 871使用外部 JavaScript 文件 最大化 Java ... -
javascript的document.write
2012-10-24 23:35 1988部分代码: <scri ... -
select元素javascript常用操作
2012-09-16 23:39 846http://xieyu.blog.51cto.co ... -
服务器端可控情形的Javascript跨域访问解决方法
2012-09-14 00:18 936http://weidagang2046.blo ... -
DOM的基本方法
2012-09-13 23:45 903http://www.webshowme.com/04 ... -
call與apply
2012-09-13 23:37 0call 方法 调用一个对象的一个方法,以另一个对象替换当前 ...
相关推荐
1. **基础语法**:JavaScript的基础包括变量、数据类型(如字符串、数字、布尔、null、undefined、对象和数组)、操作符(算术、比较、逻辑、赋值)、流程控制(条件语句、循环)以及函数的使用。 2. **函数与作用...
综上所述,3Dbody手机APP作为一种新型的教学工具,在神经系统解剖教学中的应用不仅能够提高学生的学习效率和成绩,同时也能增强教学内容的直观性和教学方法的灵活性,对于提升医学教育质量具有重要意义。随着数字...
接下来,在图Ⅷ-2中,我们可以看到大鼠和小鼠的整体骨骼左前面观,展示了骨骼系统的左前面观,包括肋骨、胸椎、颈椎、肩胛骨、肱骨、桡骨、尺骨、掌骨、指骨、腰椎、髂骨、尾骨、股骨、髌骨、腓骨、胫骨、跖骨和趾骨...
"基于VRML JavaScript的交互式《人体解 剖学》3D虚拟实验室的构建及应用" ...本文介绍了基于VRML JavaScript的交互式《人体解剖学》3D虚拟实验室的构建及应用,旨在提高学生的学习兴趣和学习效率,推动教学改革。
Three.js 是一个基于 WebGL 的 JavaScript 库,它为Web开发人员提供了一个在浏览器中创建3D图形的强大工具。这个“three.js的人体解剖图”压缩包,很显然是一个利用Three.js库来展示人体结构的3D可视化项目。下面...
系统解剖学是医学领域中的一门基础学科,主要研究人体的结构组成和各器官之间的关系。在给定的文件内容中,涉及了众多解剖学术语和解剖结构的特点,以下是根据文件内容提炼的知识点: 标准解剖学姿势:解剖学研究中...
《C语言深度解剖》是两本专注于C语言学习与进阶的重要著作,第一版和第二版的结合为读者提供了全面而深入的C语言知识体系。这个压缩包包含的资源,"C语言总结",是对C语言基础知识的精炼概述,涵盖了C语言的关键概念...
人体解剖学是医学领域中不可或缺的一门基础学科,它涉及对人类身体结构的深入研究,包括骨骼、关节、肌肉、内脏器官等各系统的组成和布局。为了帮助医学生和相关专业人员有效掌握这些知识,学习题集起到了至关重要的...
随着社会对医疗质量和医疗安全要求的不断提高,医疗纠纷死亡案例中尸体解剖工作的规范化显得尤为迫切。本文将从尸体解剖的重要性和规范化问题着手,探讨如何通过一系列措施提高尸体解剖工作的标准化程度,以期达到...
人体解剖学主要分为两个方面:大体解剖学和显微解剖学。大体解剖学关注的是肉眼可见的结构,如骨骼、肌肉、器官等,而显微解剖学则通过显微镜观察细胞和组织的细微结构。此外,根据研究目的的不同,还可以细分为系统...
在医疗和健康领域,3D人体解剖图是一种先进的学习和研究工具,它利用三维技术将人体结构以直观、立体的方式展现出来。这种技术对于医学生、医生、物理治疗师以及其他健康专业人士来说,是非常有价值的资源,能帮助...
在描述中提到的“比较简单,透视三维效果”,意味着这个解剖动画可能采用了基础的3D建模技术,能够提供基本的视角变换和透视效果。这种简化版的三维模型通常包含关键的人体器官和系统,如骨骼、肌肉、神经系统、血液...
根据提供的文件信息,这里将基于“最全,最经典的人体解剖图”这一主题进行展开,探讨人体解剖学中的关键知识点。 ### 一、人体解剖学概述 人体解剖学是研究人体结构的一门学科,它帮助我们了解身体各部位的位置、...
在CG(Computer Graphics,计算机图形学)领域,MediView是一款极具价值的工具,专为学习和理解人体解剖学设计。这款软件利用先进的三维技术和360度观看功能,提供了一个直观、立体的观察平台,使用户能够从各个角度...
目的:本研究旨在描述喉上神经外分支的解剖变化,并估计甲状腺手术中处于危险中的神经的频率。 方法:我们于2016年9月于2018年5月31日在马里巴马科的医学和牙医学口腔解剖学实验室实现了一项前瞻性研究。 所有未接受...
《C语言深度解剖》是一本专为C语言学习者和开发者设计的深入解析书籍,旨在帮助读者全面理解和掌握C语言的核心概念和技术。C语言,作为一种基础且强大的编程语言,被广泛应用于系统开发、嵌入式系统、软件工程等多个...
局部解剖学是医学专业的一门重要学科,主要研究人体局部区域的解剖结构和相互关系。根据提供的内容,我们可以了解到山东大学《局部解剖学》期末复习资料中的一些详细知识点。 一、头部结构 在头部局部解剖学中,...
这对于医学生来说是必不可少的知识储备,尤其是对于将来从事临床工作的医生而言,正确且充分地理解解剖学知识,对于疾病的诊断、治疗乃至手术过程中的精确诊断和操作都至关重要。中山大学所提供的《临床解剖学》期末...