函数

本文深入探讨JavaScript中的函数概念及其实现方式,包括函数声明、表达式、立即执行函数等,并解析作用域与执行上下文的工作原理。

 1. 函数: 
              执行一个明确的动作并提供一个返回值的独立代码块。同时函数也是javascript中的一级公民(就是函数和其它变量一样)。
 2.函数的声明方式: 
               1> 函数声明:在函数里,必须手动去声明函数的返回值,如果返回值没有申明,则此函数返回值为undefined,,return是函数内部使用的,形参能自动声明,而实参不能自动声明为undefined。我们在调用函数时要:函数+()这种形式。不然就是函数本身。function fn(){console.log("welcome");}
               2>函数表达式:例如var fun=function(){console.log("hello");}
               3>立即执行函数(IIFE):例如(function(){})()
               4>创建FUNCTION对象:例如 var func=new Function("one","two","return one+two");
                anguments:不是数组,却有数组的相关属性,是一个伪数组,类似元素集合,就算没有定义形参,一旦把实参传进函数,也可以访问到,例如:length。
 3.值传递和引用传递的区别: 
             1>值传递:声明的是原始的类型,具体的值,传给变量后,就与它本身没有关系了。
             2>引用传递:把地址传给变量,传完后变量的值会跟据变量的变化而变化 。
 4.可执行代码和执行上下文: 
             1>可执行代码:全局代码、函数代码、eval()代码(出于安全着想,一般不建议使用此类代码)
             2>执行上下文:执行代码的一个环境,环境会随着代码结束而结束,执行代码不断产生执行上下文环境。js中量声明给它的位置无关(变量提升),块作用域(js中没有这个作用域)
 5.变量和变量的初始化:

             当一个变量在声明时,就把变量存在变量对象中,变量对象(vo) #
             如果没有给一个变量定义却给它赋值,那变量就会成全局变量了。例如:a=b,前提又没有给a定义。
 6.作用域(链): 
              当一个范围里没有给这个变量定义时,我们就会上一层找,那么我们为啥函数能往上一层找啊?
              因每一个作用域对象中有一个vot和scope,而每一个scope保存上一层的vo(变量对象).scope对象是在函数声明时,它就已经存在了,是它所在的作用链的对象,

转载于:https://www.cnblogs.com/tydy9891-/p/7822516.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值