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}');

posted @ 2021-07-12 22:32  ju-ruo  阅读(132)  评论(0)    收藏  举报