狂神Java学习笔记————JavaScript(二)————函数、方法、变量作用域和内部对象

函数

  • 定义一:function 函数名(参数){函数体};
  • 定义二:let 函数名=function(参数){函数体};
        //函数定义
        function abs1(x) {
            if (x>=0){
                return x;
            }else {
                return -x;
            }
        }
        //匿名函数,把匿名函数赋值给abs2,即可以通过abs2来调用
        let abs2 =function(x) {
            if (x>=0){
                return x;
            }else {
                return -x;
            }
        }
  • 一旦执行return语句,则函数执行结束返回结果,若没有return,则返回undefined。

  • 调用函数
  • JavaScript并不会因为所传参数和定义参数在类型、个数上不同而报错,需要手动做异常检测和处理。
  • 可以通过arguments取得函数调用时传入的所有参数,arguments是一个数组。
  • 可以通过rest来获取除了已经定义的参数外的额外参数(比如定义两个参数而传入五个参数,则rest为后面三个参数组成的数组);需要在函数定义时在最后添加…rest参数,只能放在最后。
        abs1(10);//10
        abs1(-10);//10
        abs1(10,20,100);//10
        function f(a,b,...rest) {
        }

变量的作用域

  • 在JavaScript中 var定义变量实际是有作用域的。
  • 在函数体中用var或let声明的变量,在函数外是不能使用的
        function f() {
            var x=1;
            x+=1;
        }
        f();
        x+=2;//Uncaught ReferenceError: x is not defined
  • 在两个函数内分别定义同名变量,由于都是函数内的局部变量,并不会产生冲突
  • 函数内部的函数,可以访问外部函数的变量;反之不可以
//内部函数可以访问外部函数的变量
        function f1() {
            let x=0;
            f2();
            function f2() {
                alert(x);//输出0
            }
        }
  • 以下代码会报错:应该是内部函数中存在x的声明,所以alert语句中会把x当成内部函数的局部变量而执行alert语句时x又没有被声明。
        function f1() {
            let x=0;
            f2();
            alert(x);
            function f2() {
                alert(x);//Uncaught ReferenceError: Cannot access 'x' before initialization
                let x=1;
            }
        }
        f1();
  • 在内外函数均有一个同名函数的声明时,内外函数的变量相互独立
        function f1() {
            let x=0;
            f2();
            alert(x);//0
            function f2() {
                let x=1;
                alert(x);//1
            }
        }
        f1();
  • 全局变量
        //全局变量
        let x=0;
        function f() {
            alert(x);//0
        }
  • 所有全局变量都会被绑定在全局对象window下:
        let a= 123;
        alert(a);//123
        alert(window.a);//123
  • alert本身也是一个window变量(在全局下声明的函数也是)
        //即使window自己也是自己的一个对象
        window.window.window.alert(123);
  • 规范:由于所有全局变量都会绑定到全局对象下,如果不同的js文件使用了同名的全局变量,则会产生冲突,如何能够减少冲突?
  • 可以把自己的变量全部放在自己定义的唯一命名空间中,即可降低命名空间冲突的问题
        var hyx={};
        hyx.name="hou"
  • 局部作用域 let
        for (var x=1;x<100;x++){
        }
        for (let y=1;y<100;y++){
        }
        alert(x);//输出100
        alert(y);//抛出异常 y未定义
  • 常量 const
        var PI=3.1415926;
        const Pi=3.1415926;
        PI=3;//其实可以改变
        Pi=3;//不可改变,直接报错Uncaught TypeError: Assignment to constant variable.

方法

  • 方法就是放在对象内的函数,对象中只有两个东西:属性和方法
        function getAge() {
            let now =new Dat().getFullYear();
            return now-this.brith;
        }
        let hyx={
            name:"hyx",
            brith:1998,
            age:getAge()
        }
        hyx.age();//22
        getAge();//报错 this指向调用者,这里是window window没有brith
        getAge().apply(hyx,[]);//被动调用

内部对象

标准对象

        typeof 132;//number 整数小数等均为number
        typeof '123';//string 单引号、双引号反引号包裹的内容均为字符串
        typeof true;//boolean
        typeof NaN;//number NaN为number类型
        typeof [];//object 数组为object类型
        typeof {};//object 对象为object类型
        typeof Math.abs();//function 函数类型
        typeof undefined;//undefined
        typeof null;//object
  • Date
        let date =new Date();
        date.getFullYear();//年
        date.getMonth();//月 0~11
        date.getDate()//日
        date.getDay()//周几
        date.getHours()//时
        date.getMinutes();//分
        date.getSeconds();//秒
        date.getTime();//时间戳 1970年1月1日0:00到现在的毫秒数
        new Date(215616165)//通过时间戳获取时间
        date.toxxxxString()//转化为某时区的时间:返回字符串
  • JSON
  • JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。
  • 简介和清晰的层次结构使得JSON成为理想的数据交换语言。
  • 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率
  • 在JavaScript中,一切皆为对象,任何js支持的类型都可以用JSON来表示
  • 格式:
    * 对象{}
    * 数组[]
    * 所有的键值对,都是用key:value
        let user={
            name:'hyx',
            age:18
        }
        //对象转化为JSON字符串
        let jsonUser=JSON.stringify(user);
        //转化回对象
        let user1=JSON.parse(jsonUser);
        console.log(user1);//正确显示和user一样的对象
  • Ajax
  • 原生的js写法 xhr 异步请求
  • jQuey封装好的方法 $("#name").ajax("")
  • axios请求
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值