【JavaScript】函数

定义函数

定义方式一

绝对值函数
在这里插入图片描述
一旦执行到return代表函数结束,返回结果!
如果没有执行return,函数执行完也会返回结果,结果就是undefined

定义方式二

在这里插入图片描述
function(x){…}这是一个匿名函数。但是可以吧结果赋值给abs,通过abs就可以调用函数!
方式一和方式二等价!

调用函数

abs(10)//10
abs(-10) //10

 
 

    参数问题:javaScript可以传任意个参数,也可以不传递参数~
    参数进来是否存在问题?
    假设不存在参数,如何规避?

    在这里插入图片描述

    获取函数的所有参数

    arguments关键字

    arguments是一个JS免费赠送的关键字; 代表,传递进来的所有参数,arguments是一个包含所有参数的数组! 在这里插入图片描述

    问题:arguments包含所有的参数,我们有时候想使用多余的参数来进行附加操作。需要排除已有参数~

    rest关键字获取除了定义了的参数之外的其他所有多余的参数

    …rest,相当于java中的可变长参数

    以前:
    在这里插入图片描述

    ES6引入的新特性,获取除了已经定义的参数之外的所有参数~…
    在这里插入图片描述
    rest参数只能写在最后面,必须用…标识。

    变量的作用域

    在javascript中,var定义变量实际是有作用于的。
    假设在函数体重声明,则在函数体外不可以使用~(闭包)
    在这里插入图片描述
    如果两个函数使用了相同的变量名,只要在函数内部就不冲突
    在这里插入图片描述
    内部函数可以访问外部函数的成员,反之则不行
    在这里插入图片描述
    假设,内部函数变量和外部函数变量,重名!都可以用,在内部调用内部的变量,在外部则调用外部的变量
    在这里插入图片描述
    假设在JavaScript中,函数查找变量从自身函数开始~, 由“内”向“外”查找,假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数的变量。

    提升变量的作用域

    在这里插入图片描述
    结果:x undefined
    说明:js执行引擎,自动提升了y的声明,但是不会提升变量y的赋值;
    在这里插入图片描述
    这个是在javascript建立之初就存在的特性。 养成规范:所有 的变量定义都放在函数的头部,不要乱放,便于代码维护;
    在这里插入图片描述

    全局变量

    在这里插入图片描述

    全局对象window
    在这里插入图片描述

    alert() 这个函数本身也是一个window的变量;
    在这里插入图片描述
    javascript实际上只有一个全局作用域window,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在全局作用域window都没有找到,就会报错 RefrenceError

    规范

    由于我们的所有全局变量都会绑定到window上。如果不同的js文件,使用了相同的全局变量,就会产生冲突—>如何减少这样的冲突

    定义唯一全局变量,将其他变量放入唯一全局变量中


    在这里插入图片描述
    把自己的代码全部放入自己定义的唯一空间名字中,降低全局命名冲突问题~
    jQuery中就是使用的该方法:jQuery.name,简便写法:$()

    局部作用域 let

    问题:var i 在作用域外面居然还能用

    在这里插入图片描述
    ES6的let关键字,解决了局部作用域冲突的问题!
    在这里插入图片描述
    建议大家都用let去定义局部作用域的变量;

    常量

    在ES6之前,怎么定义常量:只有用全部大写字母命名的变量就是常量;建议不要修改这样的值。
    在这里插入图片描述
    在ES6引入了常量关键字 const
    在这里插入图片描述

    方法

    定义方法

    方法就是把函数放在对象的里面,对象只有两个东西:属性和方法
    在这里插入图片描述
    this.代表什么?拆开上面的代码看看
    在这里插入图片描述
    this是无法指向的,是默认指向调用它的那个对象的;

    apply

    在js中可以控制this指向,this指向了kuang,参数为空

    function getAge() {
    	now = new Date().getFullYear();
    	return now-this.birth;
    }
    	
    var kuang = {
    	name : "hhb",
    	birth : 2000,
    	age : getAge
    };
    var huang = {
       name : "huang",
       birth : 1990,
       age : getAge
    }
    	
    getAge.apply(kuang,[]);//this指向了kuang,参数为空
    

    在这里插入图片描述
    在这里插入图片描述

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值