论坛首页 Web前端技术论坛

JavaScript内核系列 第2章 基本概念

浏览 20466 次
该帖已经被评为良好帖
作者 正文
   发表时间:2010-04-09  
大家好,为了便于此系列的阅读,方便大家和我交流,指正我的错误,我在JavaEye申请了“JavaScript内核”专栏,现已获批准,大家可以加入此专栏进行讨论,谢谢!

专栏地址如下:
http://www.iteye.com/wiki/javascript-core
0 请登录后投票
   发表时间:2010-04-12  
JavaScript内核之第三章,地址如下:
http://www.iteye.com/topic/641532
0 请登录后投票
   发表时间:2010-04-18  
JavaScript内核之第四章,地址如下:
http://www.iteye.com/topic/646798
0 请登录后投票
   发表时间:2010-04-21  
-_-!!!,对于对象属性的访问,可以加上.和[]的一点小区别,如果属性是合法的变量名,则两个都可以用,反之只能用[]
0 请登录后投票
   发表时间:2010-04-21  
fantasybei 写道
-_-!!!,对于对象属性的访问,可以加上.和[]的一点小区别,如果属性是合法的变量名,则两个都可以用,反之只能用[]


没有合法不合法之说吧?
如果属性中包含点号(.)则只能用[],没有点号的两者均可。
0 请登录后投票
   发表时间:2010-04-21  
有的,var obj = {"first-name": 'Fan', first_name: 'fan'};
你可以试试obj.first_name,obj.first-name,obj["first-name"]
变量名中包含.只是非法变量名的一种。
0 请登录后投票
   发表时间:2010-04-21  
fantasybei 写道
有的,var obj = {"first-name": 'Fan', first_name: 'fan'};
你可以试试obj.first_name,obj.first-name,obj["first-name"]
变量名中包含.只是非法变量名的一种。


我感觉这个有点绕,但应该不是“非法”的问题,解释器在解释到obj.first-name时,
不知道是obj的first属性来“减”name的值,还是obj.first-name。

根本原因应该是在[]操作符里,是以字符串做索引的,因此没有问题。而点操作符不是用字符串,而是
去遍历对象的属性列表(不是用字符串)而导致的。
0 请登录后投票
   发表时间:2010-05-12  
有一问题:
var bool = new Boolean(false);
var bool1 = false;
function cont(){
   if(bool){    //if(bool1) 不执行
      alert(bool)
   }
}

这两种定义有什么区别,两者最后的值都false,为什么对象定义类型能执行???
0 请登录后投票
   发表时间:2010-05-12  
389yufeng 写道
有一问题:
var bool = new Boolean(false);
var bool1 = false;
function cont(){
   if(bool){    //if(bool1) 不执行
      alert(bool)
   }
}

这两种定义有什么区别,两者最后的值都false,为什么对象定义类型能执行???


这个跟JavaScript的类型判断/转换机制有关系:
var bool = new Boolean(false);//这是一个Boolean对象,
if(bool){//此时判断bool是否为空或undefined,相当于if(bool == null || bool == undefined),因此返回true
}


而对象直接量在判断是并非作为一个对象来判断的,简而言之,可以看下这两者在实际运行环境中的类型:
typeof bool1
boolean
typeof bool
object


bool1的值为false,因此不会执行,而bool为一个非空的对象,因此if会将其转换为true(相当于bool == null?)
1 请登录后投票
   发表时间:2011-03-23  
1.var str = "Hello, world";  
2.var obj = new Object();  
3.obj.str = str;  
4.obj.num = 2.3;  
5.   
6.var array = new Array("foo", "bar", "zoo");  
7.   
8.var func = function(){  
9.    print("I am a function here");  
10.} 

array 的类型是function  func返回的是undefined
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics