您的位置:首页 > Web前端 > JQuery

jQuery学习新篇JavaScript变量

2009-11-24 16:31 549 查看
平常工作中晓得,要会用一门技术很简单,Google一下子,其后再Copy+Paste,再批改一下子就好了。可是往往我们是知其然不知其所以然。当真个遇到客户提一两个问题的时分,就会呆在那里,不知道从哪儿动手,问其缘故,失去的答复是:当时看到网上是这么的,不知道怎么批改。

这就给我们现实的工作带到很多烦劳。要用jQuery,即将看jQuery的源码,不能说所有看懂,但是大致的一些构造和用法要熟,这么才干静待其变。除此以外我相信jQuery所以一出来就遭到很多从业人员的喜爱,一定有它的情理,从里头的细节可以看到宗师们是怎么用JavaScript的,能让我们 获益匪浅,会是你生长的催化剂。

看到jQuery的源码,会发现和其它的extjs,dojo等构架同样,用到了很多我们平常用不到的JavaScript的特征。由于平常很多属性都没有用到过。下边就仍是同样从最基本的开始,虽则是基础,但是很主要。

1,JavaScript变量的认识
1. 和JVM内部有分堆和栈同样,不同的区域来寄存的货色不一样。JavaScript解释器里也是同样。在 JavaScript 中,变量可以寄存两类别型的值,即原始值和引述值。
(一)原始值是储存在栈(stack)中的简略数据段,来讲,它们的值直接储存在变量访问的位置。
(二)引述值是储存在堆(heap)中的 对象,来讲,储存在变量处的值是一个指针,指向储存对象的内存储器处。
二.原始值有:Undefined,Null,Boolean,String,Number五品种型。由于这五品种型,占用内存储器多大的空间是固定的,并且占用空间相对软小,所以会抉择存放在stack中。在栈中除天寄放之上五种原始值部类,还要寄放一个值 ,乃是引述值的地址(也是假若一个Function,Object等,他们自身是对象,是存放在heap中的,但是解释器要去引述这些对象的时分是经过地址去引述)这些程序里边的存对象的地址这品种型,长度大小也是固定的。之所以存放在在heap中对象的地址也是存放在stack中的。
例如Date部类便是存放在heap中,请看下边的事例:

Js代码
1.
2.
3.

点击我,查看结果

stack中的两个地址day一和day二都指向heap中的同一个Date对象,所以在day2对应的Date上加一个毫秒,输出day一的两次毫秒数会不一样。
我此前刚写JavaScript的时分犯过这么的错处,@@!

2,五种原始值
上头有谈到JavaScript中原始值有五种,诀别是Undefined,Null,Boolean,Number,String,那么JS解释器是用什么来判断的呢。或者说我们何以来判断呢!
先看一个演算符typeof
typeof演算符急需一个参数,这个参数便是你要让typeof检察的变量:
例如:

Js代码
一.var name="bevis";
二.var age = 29;
三.alert(typeof name);
四.alert(typeof age);
var name="bevis";
var age = 29;
alert(typeof name);
alert(typeof age);

上头这段代码输出的结果诀别是string,number
下部结一个对比关系:
typeof演算的结果 输入的变量
------------------------------------------
undefined Undefined部类变量
boolean Boolean门类变量
number Number部类变量
string String部类变量
object 摘引部类变量或Null门类

运好typeof对我们程序会带到很多方便!

二.Undefined部类
Undefined门类唯有一个值undefined,应宣言一个变量的时分,没对变量赋值的时分,这个变量就会被赋值undefined值。
经过下边话语可以证实:

Js代码
一.var name;
二.alert(typeof name);//输出为undefined
三.alert(name==undefined);//输出为true
var name;
alert(typeof name);//输出为undefined
alert(name==undefined);//输出为true

再有一种状况亟需注意:

Js代码
一.var name;
二.alert(typeof name);//输出为undefined
三.alert(typeof myname);//输出为undefined
四.alert(name=="undefined");//输出为false
五.alert(name==undefined);//输出为true
var name;
alert(typeof name);//输出为undefined
alert(typeof myname);//输出为undefined
alert(name=="undefined");//输出为false
alert(name==undefined);//输出为true

对之上代码得出如次结论:
(一)name变量定义了没赋值,之所以用typeof输出结果为undefined,可是myname前边没定义过,输出结果也为undefined。之所以输出结果为undefined时,这个变量有可能是没定义过,也可能是定义过了没赋值。
并且要特别注意的时,由于没定义过的变量过用typeof是可以的,并且也可以输出值,但是如若对mynqme开展如次施用alert(myname==undefined);时就会疏失,由于变量要先用宣言再施用。
(二)undefined和字符串"undefined"不相等,undefined不是字符串,而是一种数据部类。

三.Null门类
Null门类,它也唯有一个值null
null示意尚不存在的对象

Js代码
一.alert(typeof null);//输出为"object"
二.alert(null==undefined);//输出为true,由于undefined衍生于null
alert(typeof null);//输出为"object"
alert(null==undefined);//输出为true,由于undefined衍生于null

实则关于JavaScript最纳闷的两个便是Null和Undefined部类。

再补给1点,
前方用typeof进展比较时,如其原始类弄的话,调用typeof是输出呼应的部类,如若对引述部类用typeof的话,老是输出object
如其要判断对像样不是哪类别型的对象,快要用instanceof

Js代码
一.var name="bevis";
二.alert(typeof name);//输出为string
三.alert(name instanceof String);//输出为false
四.name= new String("bevis");
五.alert(typeof name);//输出为string object
六.alert(name instanceof String);//输出为true
本文来源:
我的异常网
Java Exception
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: