javascript语法(类比php)

作者: 王中阳 | 来源:发表于2016-08-17 17:22 被阅读128次

    关联数组

    1. php
    $assoc = array('one'=>1,'two'=>2);
    
    1. javascript
    var assoc = {'one':1,'two':2};
    
    注意:将键包围起来的引号,我们把键称为属性,他们的确是一个对象的属性,通常会被忽略。当键是有效标识符的时候(意味着他们可以用作变量名),引号是可选的。
    var assoc = {one:1,two:2};
    
    1. 添加
    assoc.three = 3;
    //结果是
    assoc = {one:1,two:2,three:3};
    
    1. 删除
    delete assoc.two;
    
    1. 访问一个对象的属性
    assoc.one //1
    assoc["one"]; //1
    

    严格比较

    1. 三元相等符号===是严格比较:对表达式的值和类型都会进行比较。
    2. ==是宽松比较:只比较值。
    3. 通常,有很多假(false)值(在非严格的比较中,这些值会强制转型为false),包括:
    • 空字符串""
    • 数字0
    • 值false
    • Null
    • Undefine
    • 特殊的数字NAN(not a number)
    1. 举例
    null == undefine //true
    "" == 0  //true
    null === undefine //false
    "" === 0 //false
    
    1. 和php的数组比较
    //php
    if(array()){
        echo "hello"; //在php中不会执行这行代码
    }
    
    //js
    if([]){
        console.log('hello'); //js中会执行这段代码
    }
    
    1. 常识性问题:并不是所有假值都非严格的和另外的假值相等
    undefine == null //true
    undefine == 0 //false
    
    1. 总结:为了简化,在js中进行比较时,采用三元===进行严格比较非常靠谱。

    switch

    • JavaScript中的switch是使用严格比较来计算的。

    try-catch

    //php
    try{
        throw new Exception('ouch');
    }catch(Exception $e){
        $msg = e->getMessage();
    }
    
    //js
    var msg = '';
    try{
        throw new Error('ouch');
    }catch(e){
        msg = e.message;
    }
    msg; //'ouch'
    
    1. 总结:与php相比,js的区别
    • js抛出的是Error,php抛出的是Exception
    • js的catch直接捕获,不需要声明类型
    • js访问message属性,php通过getMessage()方法
    1. 常识:js中也有finally,但是很少用,特别是考虑到他在ie上的bug
    2. 注意:要避免将try-catch放入到对性能有影响的代码中(如:应该将tty-catch语句块放到循环之外)

    while do-while for循环

    1. while
    var $i=1,$sum=0;
        while($i<=100){
            $sum+=$i++;
        }
    alert($i); //101 i先自增再赋值给$sum
    alert($sum); //5050
    
    1. do-while
    var $i=1,$sum=0;
    do{
        $sum+= $i++;
    }while($i<=100)
    alert($i); //101 i先自增再赋值给$sum
    alert($sum); //5050
    
    1. php中的for循环
    var $i=1,$sum=0;
    for($i=1,$sum=0,$i<=100;$i++){
        $sum+=$i;
    }
    alert($i); //101 i先自增再赋值给$sum
    alert($sum); //5050
    

    for-in循环

    1. for-in相当于php中的foreach循环
    //js
    var clothes = {
        shirt:'black',
        pants:'jeans',
        shoes:'none' //由于旧的ie存在,结尾放逗号的话会有问题
    }
    
    var out = '';
    for(var key in clothes){
        out += key + ':' + clothes[key] + '\n';
    }
    
    • 注意:
    • 在该循环中,我们不能直接访问下一个属性的值,因此,我们需要用方括号表示法clothes[key]来获取值
    • 枚举属性的顺序不是固定的(shoes可能会出现在shirt之前)

    其他操作符

    1. in
    • 遍历一个对象的属性
    • 检查一个对象中是否存在某个属性
    if('shirt' in clothes){ //true
    
    }
    
    if(clothes['shirt']){ //true
    
    }
    
    if(clothes.shirt){//true
    
    }
    
    1. 字符换连接
    var temp = 'a'+'b'+'c' //'abc'
    ['r','-','v'].join(''); //'r-v'
    ''.concat('r','-','v');//'r-v'
    String.prototype.concat('r','-','v');//'r-v'
    

    总结:

    • 符号 +
    • join()
    • concat():concat() 方法用于连接两个或多个数组。
    1. 强制类型转化
    • 符号 +
    +"1"; //将字符串"1"转化为数字1
    ""+1; //将数字1转为字符串"1"
    
    • !! 类型强制转换
    !!1 ; //true :1取反为false再取反为true
    !!""; //false : ""取反为true再取反为false
    
    • 内建的构造函数
    Number("1") === 1;//true
    String(100) === "100";//true
    Boolean(0) === false;//true
    Boolean(100) === true;//true
    
    1. void
    2. 逗号操作符

    相关文章

      网友评论

        本文标题:javascript语法(类比php)

        本文链接:https://www.haomeiwen.com/subject/xswmsttx.html