@llqintel
2014-11-26T08:08:48.000000Z
字数 2090
阅读 1382
js基础 js误区 周分享
基本类型: Undefined Null Boolean Number String.
复杂类型: Object
布兰登·艾奇(Brendan Eich):
java(对Javascript)的影响,主要是把数据分成基本类型(primitive) 和对象类型(object)两种,比如
字符串和字符串对象,以及引入了Y2K问题。这真是不幸啊。
值类型 引用类型 赋值 复制
以下注意点
undefined 与null
java中只有null,表示空对象常见:空指针异常
javascripta. undefined表示一个对象没有被定义或者没有被初始化;b. 对象属性值不存在,返回undefined;var obj={x: 5};console.log(obj.y);c. 函数没有返回值,则默认返回undefinedvar f = function(x){x.id+=1;}console.log(f);d. null表示空对象指针,可以用来清除对象(设为空值)e. 区别:undefined侧重于意料之外的,类似错误的值的空缺;null侧重正 常的,意料之中的值的空缺。应用:手动为变量赋值或者作为参数传入函数,最佳选择是null.var list = null,fun = function(param){...};fun(null);
其他理解:Javascript的10个设计缺陷之一。两者非常容易混淆,但是含义完全不同。var foo;alert(foo == null);alert(foo == undefined);alert(foo === null);alert(foo === undefined);在编程实践中,null几乎没用,根本不应该设计它。
NaN 表示非数字值
not a number的缩写,但实际上就是特殊的number有一些奇怪的特性:'sss'==NaN;//?'sss'!=NaN;//?1+NaN;Javascript的10个设计缺陷之一。与其设计NaN,不如解释器直接报错,反而有利于简化程序。
Infinity -Infinity
弱类型
//1.没有明显的类型var s = null;s = new Date();s = 222; //不推荐,容易造成混乱//2.随着环境自动变换类型'a' + 1;'1' + '1';1 + '1';'1' + 1;
强类型
//1.指定变量类型int x1 = 111;long y1 = x1;//2.相同类型才能运算String str = 1234 + "ccccc";
总结:弱类型代码简单,但因为变量没有确定的类型,所以容易出错!强类型代码复杂,但因为有严格定义所以不容易出错
java:向上转型short s = 1;s = s + 1;//error?子对象可隐式转为父对象【函数传参】,反之需要强转
js== === != !== ![布尔操作符] if while
tip:尽可能使用=== !==(精确,严谨)
4.值类型与引用类型(赋值与复制)(指针)(浅复制与深复制) [与java类似]
两种语言都有&& || 等
相同点:
&& 执行布尔与(AND)操作,左右两个操作数都为true时才返回true;||一样&&优先级高于||;都具备短路的功能(区分于&和|);
不同点(js逻辑表达式的多层理解及使用技巧):
在js中除了false、null、undefined、0、-0、NaN、'',其他值包含对象都可以转为true。在js中任何希望使用布尔值的地方,表达式都会将其当做true或false对待,因此实际上"&&"并不总是返回true或false(操作数也可以非布尔值),但并无大碍。&&: 如果两个操作数都为真,那么返回一个真值;反之,返回一个假值加之短路特性,有一些小技巧可以使用:var name = obj&&obj.name,ej = ej||'初始值';监听事件的函数中:ev = event||window.eventvar a = null,i=2;-----------------------------------------------if(i===1) a = '上架';else if(i===2) a = '下架';else if(i==3) a = '成交';---------------------等价变换-------------------a = ((i===1)&&'上架')||((i===2)&&'下架')||((i===3)&&'成交');
tip:可以与三元运算符组合使用,使代码更简洁。但要合理选用,过长的表达式可能会降低了代码的阅读性。
先进行一个简单的运算
0.3-0.2=?
参考资料
[1] []