Js函数的三种创建、四种调用

// 函数的三种创建方法
function one(){   // 函数声明,不属于任何对象,始终默认为全局对象
console.log("第一个函数")
//默认有一个return this,返回函数中的内容
}
one();      //必须调用;可以在函数声明前调用(预处理变异机制)                       

var fn=function(){                  //函数表达式
console.log("第二个函数")
}
fn(); //必须先声明再调用                                 

var fun=new Function(console.log("第三个函数")); //构造函数 无需调用,会自调
// 函数的4种调用方式
function one(){                     
console.log("一个函数")
}
one();  //作为一个函数去调用


var person={
name:"tom",
age:18,
speak:function(){
console.log("English")
}
}                   
person.speak(); //函数作为对象的方法的调用


function num(n1,n2){
this.number1=n1;
this.number2=n2;// 构造函数中的this没有任何值
}

 var i=new num(3,5);
 console.log(i.number1) // 构造函数会创建一个新的对象,新的对象会继承构造函数的属性和方法


 function myFunction(a,b){
 return a+b;
 }
 myFunction.call(this,2,5);

 var myArry=[2,5];
 myFunction.apply(this,myArry); //作为函数方法调用函数 call()和apply()是预定义的函数方法,apply传入的是一个数组,call传入的是参数

js的运行机制问题:(声明提升)
1、在js中js引擎会优先解析var变量和function定义!在预解析完成后从上到下逐步进行!
2、解析var变量时,会把值存储在“执行环境”中,而不会去赋值,值是存储作用!例如:
alert(a); var a = 2; 这时会输出undifiend,意思是没有被初始化没有被赋值!
这并不是没有被定义,错误了的意思!
3、在解析function时会把函数整体定义,这也就解释了为什么在function定义函数时为什么可以先调用后声明了!其实表面上看是先调用了,其实在内部机制中第一步实行的是把以function方式定义的函数先声明了(预处理)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值