Javascript基础(2)
Javascript基础(2)
1、函数
JavaScript中的函数使用起来非常随意
在进行参数传递时,参数少了,以及多了都不会进行报错。
var abc=function (x){
    if(typeof x!="number")
        throw 'not a number';
    if(x>=0){
        return x;
    }
    else{
        return -x;
    }
}
2、arguments
arguments是js免费赠送的关键字,代表传递进来的所有参数,是一个数组。
   var abc=function (x){
       if(arguments.length>1)
       {
           console.log("x="+arguments[0]);
           for (let i=1;i<arguments.length;i++){
               console.log(arguments[i]);
           }
       }
       if(typeof x!="number")
           throw 'not a number';
       if(x>=0){
           return x;
       }
       else{
           return -x;
       }
   }
注意:arguments中包含所有的参数,我们有的时候想使用多个参数来进行附加操作时,需要排除已经有的参数
3、rest
 ES6引入的新特性,获取除了已定义的参数之外的所有参数
var xyz=function (a,b,...rest){
    console.log(a);
    console.log(b);
    console.log(rest);
    return;
}
4、变量的作用域
- 
在函数内部使用var定义变量,变量的作用域在函数内,在函数外不可以使用
 - 
使用var定义在外部的变量就是在全局变量上,alert(window.x);
 - 
js只有一个全局作用域,就是在window下,任何(函数也可以是视为变量),都在window下
window.alert=function(){ } window.alert(123); //这的window.alert失效了 window.alert=old_alert; window.alert(456); //这里又成功了 - 
函数外部可以访问内部的变量,内部不可以访问外部的变量
function aaa(){ alert x=0; console.log(y);//可以 function bbb(){ alert y=0; console.log(x);//不可以 return; } return; } - 
js中的声明变量都会被提前,但是赋值不会被提前
var x; ... ... var y=1; 等同于 var x; var y; ... ... y=1; - 
JavaScript实际上只有一个全局作用域,任何变量(包括函数)都会先在函数作用域内寻找,寻找不到在到全局,window下寻找
 
5、弊端
由于采用这样的这样的绑定全局变量的方法,如果不同的全局变量采用了不同的全局变量方法,就会产生冲突,如何降低命名冲突的问题
var kuangsheng={};//定义一个全局变量
kuangsheng.name="kuangshen";
kuangsheng.add=function(a,b){
    return a+b;
}
把需要使用的全局变量放到自己定义的唯一的命名空间中,降低全局命名储存
6、局部作用域
for(let i;i<100;i++){
}
//i出了for循环就不可以使用
7、常量const
ES6才提出
const PI='3.14';
//只读
8、方法
方法就是把函数放在对象的内部,对象里面只有两个东西,属性和方法
var kuangs={
    name:'hejin',
    birth:2000,
    getAge:function(){
        var now=new Date().getFullYear();
        return now-this.birth;
    }
}
方法一定要带括号
9、JOSN
在JavaScript中一切对象都可以转换为JOSN的类型:
对象都用:{}
数组都用:[ ]
所有键值对都用Key:value
JavaScript和JOSN想互转换
var jsonUser=JSON.stringify(user);
var obj=JOSN.parse('{"name":"qingjiang","age":3}');

                    
                
                
            
        
浙公网安备 33010602011771号