日期:2014-05-16  浏览次数:20393 次

undefined和Undefined
1.刚开始学js,能否讲述undefined和Undefined的区别。
2.代码如下:
if( carname == null)
{
alert("1");
}

if( carname == Undefined)
{
alert("2");
}

if( null== undefined )
{
alert("3");
}

if( 'undefined' in window )
{
alert("4");
}

结果在chrome里点击button之后就只能出现1.求问是怎么回事?
答对第一个20分,答对第二个60分。先谢谢各位大大了。

------解决方案--------------------
本帖最后由 showbo 于 2013-11-06 17:32:47 编辑
没有Undefined这个预定义的变量,只有undefined

要注意区分大小写

知道这2个区别第二个就不用说了吧,报错了
------解决方案--------------------
Undefined是一个原生类型,该类型只且只有一个值 undefined
可在ecmascript标准中找到具体说明
至于你这儿只alert出1的原因是代码出错
虽然标准中有Undefined这个类型,但浏览器却没定义或未公开这个变量,所以直接用会引起异常
------解决方案--------------------
undefined表示变量不存在,或变量声明未赋值,或某个对象不存在的属性

Undefined表示的是JS的一种数据类型,它有惟一的值undefined

比如数据类型Boolean,它的值只可能是true或false。

如果你不事先声明一个叫Undefined的变量,那么
if( carname == Undefined) 这样写绝对是错的,因为它不像Boolean,String等(除了表示一种数据类型,它还是一种JS对象),它只是表示一种数据类型,当你引用的变量数据类型是Undefined时,那么这个变量的值就是undefined

------解决方案--------------------
咋不会用调试器。
用alert这么低级。

var $b = Undefined; 是报错的。
------解决方案--------------------
没有Undefined 
------解决方案--------------------
Undefined只是一種數據類型,當某個變量的數據類型是Undefined,它的默認且惟一的值就是undefined。

在JS中,我們要使用某個變量的時候,往往要判斷變量是否存在并且是否被賦值,那么如果這個變量的值為undefined時,那么我們知道了,這個變量的數據類型是Undefined,它不存在或沒有被賦值。

因此Undefined在JS中,只是一個名詞概念,來表示一種數據類型,真正在程序中使用到的是它的值undefined。
------解决方案--------------------
判断变量是否定义是这样的:
if(typeof(carname)=='undefined')
  alert("not exists");
------解决方案--------------------
据我判断,搂住是不是吃饱了,没事干。

1,那不是异常,那是错误。任何语言,遇到错误,难道会继续进行下去吗?
2.只要值是undefined,他就是Undefined类型。Undefined类型一般很多地方都会叫undefined类型。
------解决方案--------------------
引用:
Quote: 引用:

据我判断,搂住是不是吃饱了,没事干。

1,那不是异常,那是错误。任何语言,遇到错误,难道会继续进行下去吗?
2.只要值是undefined,他就是Undefined类型。Undefined类型一般很多地方都会叫undefined类型。

 嗯,我知道了,就是js有错误,浏览器只是停止执行而不会提示错误。
但是到底有没有Undefined这种类型呢?为什么有回复说没有这种类型。而且我用typeof做实验,结果也是undefined而不是Undefined?


我终于明白你的 意思了

undefined 在js中 属于一个状态判断对象
当一个变量没有定义 那么他就匹配 undefined
注意 他和null是有区别的

为什么有 undefined 
如下:
在面向对象的程序中 实际对象 和 变量 是2个分离的关系

比如   "123"  这是一个 string 类型的对象
       var str;   声明了一个变量
var str = "123";  声明了变量str 指向了对象"123"(细节可能不完全是这样 但是逻辑上就是这样)

怎么指向的?也就是 怎么程序内部知道 str 指向 “123”
变量 str 保存在 栈上  他包含一个数字的值
对象 "123" 保存在 堆上 他有一个地址(看成内存存放该对象的起始值)