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

javascipt-基础随笔

Posted on 2013-04-08 12:24  Step at a time  阅读(487)  评论(0编辑  收藏  举报

javascipt-基础---细节需要注意的地方:

1、特殊数值:NaN、Infinity、isNaN()、isFinite()

NaN:

var a=parseInt('a123');
window.alert(a); //输出NaN

Infinity:

window.alert(6/0);//输出Infinity 无穷大(最好不要这样写)

isNaN():判断是不是数,不是数返回true,是数返回false

var a="dd";

window.alert(isNaN(a)); //返回true

 isFinite():用于判断是不是无穷大。如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。

window.alert(isFinite(6/1)); //返回true
window.alert(isFinite(6/0)); //返回false

 2、逻辑运算符:

在逻辑运算中,0""falsenullundefinedNaN均表示false

(或 || )||  将返回第一个不为false 那个值(对象亦可),或者是最后一个值(如果全部都是false的话)

这个知识点在javascript框架中运用很多。

a、

    var a=true;
    var b=false;
    var c=b || a;

    window.alert(c); //输出true

b、

    var a=2;
    var b=0
    var c= a || b;

    window.alert(c); //返回第一个值,输出2

c、

    var a=false;
    var b="";
    var c =0;
    var d =new Object(); //对象

    var aa=a || b || c ||d ; //a,b,c 全是false 这返回d
    window.alert(aa); //返回d (对象) 

 4、多分支 switch

    var flag=1;

    switch(flag){
        
        default:
        window.alert("啥都不是");
        
        case 'a':
        window.alert("a");

        case 'b':
        window.alert("b");  //没有break语句,没有匹配成功, 此时结果都输出
            
    }
    var flag=1;

    switch(flag){
        
        default:
        window.alert("啥都不是");
        
        case 'a':
        window.alert("a");

        case 1:
        window.alert("b");  //没有break语句 当匹配成功则不再找break语句 此时输出b
            
    }

 5、函数调用

func.js

function abc(val){
    
    window.alert("abc()"+val);
}

//有返回值的函数
function test(num1,num2){

    var res=0;
    res =num1+num2;

    return res;
}

//没有返回值的的函数
function noVal(num1,num2){
    
    var res=0;
    res=num1+num2;
}

函数调用:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<script type="text/javascript" src="func.js"></script>
<script type="text/javascript">
    
    //函数调用1---普通调用(常用调用函数)
    abc(50);

    //函数调用2---变量=函数名; 调用的时候这样调用:变量(实际参数)
    var test1=abc;    //此时变量就相当于函数的引用(指针)
    window.alert(abc);  //输出abc整个函数代码,就能理解了
    test1(500);

    //如果调用的函数有返回值,可以在程序中直接返回,没有返回值但是你接收了,这是返回undefined
    //调用有返回值的函数
    var res=test(20,40);
    window.alert(res); 
    
    //调用没有返回值的函数
    window.alert("调用没有返回值的函数");
    var res=noVal(1,1);
    //此时输出undefined
    window.alert(res);

</script>
</head>
<body></body>
</html>

 js支持参数个数可变的函数 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<script type="text/javascript" src="func.js"></script>
<script type="text/javascript">

    //函数调用--递归

/*    function abc(num){
        
        if(num>3){
            
            abc(--num);
        }
        document.writeln(num);
    }
    
    //调用函数
    abc(5);   //输出 3 3 4
*/

    //js支持参数个数可变的函数 

    function abc(){
        //js中提供了一个arguments,可以访问所以传入的值
        window.alert(arguments.length); //传入多少个
        //遍历传入的参数
        for(var i=0;i<arguments.length;i++){
            
            window.alert(arguments[i]);
        }
    }
    
    //调用
    window.alert("abc(12,13,\"hello\",56)");
    abc(12,13,"hello",56)
    
    window.alert("abc(5)");
    abc(5);

    window.alert("abc()");
    abc();
</script>
</head>
<body></body>
</html>

 函数中使用全局变量与局部变量

<script type="text/javascript">
    //全局变量与局部变量
    var num=90;

    function test(){
        
        //在函数里,如果不带var就表示使用全局变量,
        //如果带var,表示在函数中定义一个新的 num变量
        //var num=900;
        num=900;
    }

    test();
    window.alert("num="+num); //输出num=900
</script>

 6、访问对象属性有2中方式

<script type="text/javascript">

/*  //js中 一切都是对象
    function Person(){}
    window.alert(Person.constructor);
    var a=new Person();
    window.alert(a.constructor);
    window.alert(typeof a);
    window.alert(Person);
*/
    //访问对象属性有2种方式 1、对象名.属性名 2、对象名["属性名"](动态调用)
    function Person(){}
    
    var a=new Person()
    a.name="小明";

    window.alert(a.name);//普通方式
    var str="na"+"me";
    window.alert(a[str]);//动态方式
    //window.alert(a["name"]);//输出小明

</script>

 7、创建对象的方式有五种

  1. 工厂方法—使用new Object创建对象并添加相关属性.
  2. 使用构造函数来定义类(原型对象).
  3. 使用prototype
  4. 构造函数及原型混合方式.
  5. 动态原型方式.