javaScript函数

javaScript的函数

js可以使用function关键字定义一个函数,函数可以通过申明定义,也可以是一个表达式。

function add(agrs1,args2){
    return agrs1 + args2;
}
add(1,2);

var fun = function(){ console.log("test") }; //此时函数使用变量存储,没有函数名,称为匿名函数
fun();

javaScript使用Function关键字定义构造函数

var fun = new Function("a","b","return a / b");
var m = fun(2,1);

在实际开发中应该尽量避免使用new关键字

函数提升

变量可以提升,函数也可以提升。即先使用后声明

add(1,2);

function add(agrs1,args2){
    return agrs1 + args2;
}

//使用表达式声明函数【匿名函数】不可以提升
fun(); //不合法
var fun = function(){ console.log("test") }; 

自执行函数

使用表达式声明的函数可以自调用

(function(){
    .....
})(); // 此时函数会自动执行

函数可以作为表达式或值使用

var fun = function(a,b){
    return a * b + a / b;
}
var x = fun(1,2) + 3;
function getVal(){
    return '123';
}
var x = getVal;

箭头函数

const add = (x,y) => { return x + y; }

注意:

  • 箭头函数没有自己的this,所以不适合作为一个对象的方法。
  • 使用const存储函数可以保证函数表达式始终为一个常量。
  • 箭头函数的this指向外层的this。
  • 箭头函数无法提升,需要在使用之前定义。

函数参数

  • javaScript对函数的参数不会做任何检查。
  • JavaScript 函数定义显式参数时没有指定数据类型。
  • JavaScript 函数对隐式参数没有进行类型检测。
  • JavaScript 函数对隐式参数的个数没有进行检测。

如果函数定义了显示参数但是没有传参数,默认为undefined

function agrs(a1,a2){
    if(a1 === undefined){
        a1 = 0; // a1 = a1 || 0; 最好给参数一个默认值
    }
}

es6函数可以自带默认参数值

function args(a1 = 1,a2 = 2){
    return a1 + a2;
}

使用 arguments获取函数参数列表

var x = function(){
    var args = arguments; //1,2,3,4,5,6
}
x(1,2,3,4,5,6);

调用函数

注意构造函数的调用

// 构造函数:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName  = arg2;
}

var obj = new myFunction("a","b");
obj.firstName;
//构造函数中 this 关键字没有任何的值。this 的值在函数调用实例化对象(new object)时创建。

作为对象方法调用

function myFunction(a, b) {
    return a * b;
}
myObject = myFunction.call(myObject, 10, 2);   //call()与apply()第一个参数必须为对象

var argsArr = [10,2];
myObject = myFunction.apply(myObject, argsArr); 

两个方法都使用了对象本身作为第一个参数。 两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。

在 JavaScript 严格模式(strict mode)下, 在调用函数时第一个参数会成为 this 的值, 即使该参数不是一个对象。

在 JavaScript 非严格模式(non-strict mode)下, 如果第一个参数的值是 null 或 undefined, 它将使用全局对象替代。也就是说apply或者call能够改变this的指向

本文借鉴 菜鸟教程-javaScript函数篇

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值