JavaScript基础知识
?
1.数据类型(data type)
?
JavaScript是一门动态语言,类型由赋予的值决定的,同一个变量可以指向不同的类型的值。例如:
var a = 1; // a 是Number类型的 a = 'bar'; // a 变成String类型的
?那如何确定一个变量的类型呢,利用tpyeof操作符。例如:
var a = 1; typeof a // 'number' a = 'bar'; typeof a// 'string'
?但是在JavaScript中数组是一个Object,所以
var a = ['a', 'b', 'c']; typeof a // 'object'
?如果需要的到精确的类型,如‘array'、'regexp'、'date'等,可以使用JavaScript的library提供的方法。如jQuery中的type方法。
?
2.引用(reference)
?
JavaScript中通过一个变量指向一个实际的对象来操作该对象。例如:
var obj = new Object(); obj.name = 'Ann'; alert(obj.name);//'Ann'
?如果多个变量指向同一个实际的对象,那么一个变量改变该实际对象,其他的变量也会相应改变。例如:
var obj = new Object(); var objRef = obj; obj.name = 'Ann'; alert( objRef.name == 'Ann' );//true
?在JavaScript中变量永远指向一个实际的对象,而不指向其他引用。有一些看似违背了该原则的情况,例如:
var str = 'abc'; var strRef = str; strRef += 'd'; alert( str ); //'abc' alert( strRef == str ) //false
?因为字符串的连接操作会生成新的字符串对象而非原来的字符串对象。
?
3.作用域(scope)
?
JavaScript是函数作用域,即以function来划分作用域的,这点对于习惯使用C、Java等块作用域的程序员比较不适应。例如:
if( true ) { var i = 2; } alert(i);//2
?
4.简便写法
?
在JavaScript的代码中常见的一些简便写法有:
1>参数默认值
fuction foo( bar ) { bar = bar || 'default'; //当bar没有传入,默认是'default' }
?2>对象检测法
if(document && document.getElementById && document.getElementsByTagName && docuemnt.body) { alert('DOM is already loaded.');//DOM 加载完毕的检测 }
?在&&操作符的执行顺序是从左到右,如果左操作数为false,则直接返回false,而不会再检查右操作数。
3>减少if写法的方式
第一种方法: 利用 ? : 三元操作符, 例如:
var x = 2 > 1 ? 'yes' : 'no'; alert(x); // 'yes'
?第二种方法:使用{}对象来表示关联,例如:
var funcObj = { a: function() { return 'a'; }, b: function() { return 'b'; } }; alert( funcObj.b ); // 'b'
?其他的JavaScript简写方法还有很多,目的都是为了代码的整洁性和可重用性(clean and reusable)。
?
小结:JavaScript是一门非常灵活的语言,本文介绍了类型、引用、作用域和一些常见的简便写法几个方面,只要努力,语言本身还是比较简单的,当然最好的学习方式就是实践,make your hands dirty!
?
PS:推荐一个JavaScript Tips。
?