gdjlc

培养良好的习惯,每天一点一滴的进步,终将会有收获。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

JavaScript高级程序设计学习笔记1: 基础

一、语法:

1、区分大小写。
2、变量是弱类型。
3、每行结尾的分号可有可无。如果没有分号,以这行代码的结尾看作该语句的结尾。

二、变量

1、同一个var语句可以定义多个变量,而且不必具有相同的类型。
   如:var test = "hi", age = 25;

2、变量名需要遵守两条简单的规则:
   (1)第一个字符必须是字母、下划线(_)或美元符号($)。
   (2)余下的字符可以是下划线、美元符号或任何字母或数字字符。

3、使用变量之前不必声明,解释程序遇到未声明过的标识符时,用该变量名创建一个全局变量,并将其初始化为指定的值。

      var sTest = "hello ";
      sTest2 = sTest + "world";
      alert(sTest2); //输出 "hello world"

三、原始类型

5种原始类型:Undefined、Null、Boolean、Number、String
可以用 typeof 运算符检查变量或值的类型,其中对于引用类型或null值会返回“object”:
    如:

      var sTemp = "test";
      var sTemp2;          //输出 "string" 
      var oNull = null;    //输出 "string"
      alert(typeof sTemp); //输出 "string"
      alert(typeof 9);     //输出 "number"
      alert(typeof sTemp2); //输出 "undefined"
      alert(typeof oNull);  //输出 "object"

1、Undefined
声明的变量未初始化时,该变量默认值是Undefined;
当函数无明确返回值时,返回值也是Undefined;

2、Null
用于表示尚未存在的对象。

3、Boolean
进行比较时,==与===的区别:
进行双等号==比较时,先检查两个操作数数据类型,如果相同,则进行===比较,如果不同,则进行类型转换成相同类型后再进行比较:
(1)如果其中一个是Boolean值,则转换成数字,false转换成0,true转换成1;
(2)如果其中一个是字符串,一个是数字,字符串转成数字;
(3)如果一个是对象,一个是字符串,对象转成字符串(调用toString()方法);
(4)如果一个是对象,一个是数字,对象尝试转成数字;
(5)null 和 undefined相等;
(6)如果两个都是对象,比较它们引用值;
而===比较时,如果类型不同,直接就是false。
例子:

null == undefined //true
0==true //false
1==true //true
2== true //false
null === undefined //false
0===true //false
1===true //false
2=== true //false

4、Number
八进制字面量的首数字是0,如 var iNum = 070; //即等于10进制的56
十六进制字面量的前2位是0x,如var iNum = 0x1f; //即等于10进制的31
浮点值必须包括小数点和小数点后一位数字,如1.0而不是1
NaN表示非数(不是数字),NaN == NaN等于flase,一般用函数isNaN判断是否数字

5、String
字符串字面量可使用双引号或单引号声明。

四、转换

1、Number类型转换成字符串
   有两种模式:默认模式和基模式,基模式可以用不同的基输出数字,例如二进制的基是2,八进制的基是8,十六进制的基是16。

   var iNum = 10;
   alert(iNum.toString());     //输出 "10"
   alert(iNum.toString(2));    //输出 "1010"
   alert(iNum.toString(8));    //输出 "12"
   alert(iNum.toString(10));    //输出 "10"
   alert(iNum.toString(16));  //输出 "A"

2、非数字的原始值转换成数字
(1) parseInt() 转换成整数
(2) parseFloat()  转换成浮点数
parseInt()方法首先查看位置0处的字符,判断它是否是个有效数字;如果不是,该方法将返回NaN,不再进行继续执行其他操作。但如果该字符是有效数字,该方法将查看位置1处的字符,进行同样的测试,这一过程将持续到发现非有效数字的字符为止,此时parseInt()将把该字符之前的字符串转换成数字。如

var iNum1 = parseInt("1234blue); //return "1234"
var iNum2 = parseInt("0xA"); //return "10"
var iNum3 = parseInt("22.5"); //return "22"
var iNum4 = parseInt("blue"); //return "NaN"

3、强制类型转换
(1) Boolean(value)
如果要转换的值是至少有一个字符的字符串、非0数字或对象时,Boolean()函数将返回true。
如果该值是空字符串、数字0、undefined或null,它将返回false。

var b1 = Boolean("");            //false
var b2 = Boolean("hi");          //true
var b3 = Boolean(100);           //true
var b4 = Boolean(null);          //false
var b5 = Boolean(0);             //false
var b6 = Boolean(new Object());  //true

(2) Number(value)
Number()的强制类型转换与parseInt()和parseFloat()的处理方式相似,不同的是它转换的是整个值,而不是部分值。

Number(false)             //0
Number(true)              //1
Number(undefined)         //NaN
Number(null)              //0
Number("5.5")             //5.5
Number("56")              //56
Number("5.6.7")           //NaN
Number("new Object()")    //NaN
Number("100")             //100

(3) String(value)
可把任何值转换成字符串,和toString()的区别是转换null或undefined可以生成字符串而不引发错误。

var s1 = String(null);   //null
var oNull = null;
var s2 = oNull.toString() ; //引发错误

五、用arguments对象模拟函数重载

function test(){
    if(arguments.length == 1)
        alert(arguments[0] + ",你好");
    else if(arguments.length == 2)
        alert(arguments[0] + "," + arguments[1] + ",你们好")
    else
        alert("大家好");   
}
test();   //输出: 大家好
test("a");  //输出: a,你好
test("a","b");  //输出: a,b,你们好
test("a","b","c","d");  //输出: 大家好

六、创建函数

创建函数有2种方式:
1、函数声明

    function test(){
        console.log('test');
    } 

调用函数,FunctionName(),上面例子:

test();

如果直接像下面这样,会报语法错误:

    function test(){
        console.log('test');
    }();

但是如果将函数体部分用()包裹起来,解析器会以函数表达式的方式去调用定义函数。结果会正常的立即执行。
大多数情况下用!,因为比()节省一个字符。

    (function test(){
        console.log('test');
    })();

或者用!、+、-也是同样的结果

    !function test(){
        console.log('test');
    }();

2、函数表达式

    var test = function(){
        console.log('test');
    }

 

posted on 2010-01-29 10:48  gdjlc  阅读(198)  评论(0编辑  收藏  举报