标签:console log AO js 词法 var 函数
############### JS函数 ################
//js中函数和python中的函数非常的相似,只是定义的方式有些不同 //函数的定义 function foo(a,b) { console.log(a); console.log(b); return a+b; //带返回值的函数 } //匿名函数 //需要使用一个变量去接收他, var func = function (a,b) { console.log(a); console.log(b); return a+b; //带返回值的函数 }; //立即执行函数 //先写两个括号,第一个括号内部定义,第二个括号内部传递具体的参数 (function (a,b) { console.log("立即执行函数"); console.log(a+b) })(11,222); //arguments function foo(a,b) { console.log(a); console.log(b); console.log(arguments.length); //这个 arguments 根据传入的参数,是一个列表[a,b] //可以遍历这个arguments对象 return a+b; //带返回值的函数 } //函数的调用 var ret1 = foo(11,22); // 调用的时候,如果传递的超出定义的,超出的不起作用,并不会导致程序报错, //如果传递的参数少于定义的,未定义的就会显示undefined,也不会程序报错, //这是js比较随便的地方, console.log(ret1); var ret2 = func(11,12); console.log(ret2); /* 局部变量: 在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。 全局变量: 在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。 变量生存周期: JavaScript变量的生命期从它们被声明的时间开始。 局部变量会在函数运行以后被删除。 全局变量会在页面关闭后被删除 * */
############### JS词法分析 ################
//js的词法分析 var age =18; function foo() { console.log(age); var age =22; console.log(age); } foo(); //结果是 undefined ,22 , //为什么? //因为函数执行的时候,会对函数内部进行词法分析 /* JavaScript中在调用函数的那一瞬间,会先进行词法分析。 词法分析的过程: 当函数调用的前一瞬间,会先形成一个激活对象:Avtive Object(AO),并会分析以下3个方面: 1:函数参数,如果有,则将此参数赋值给AO,且值为undefined。如果没有,则不做任何操作。 2:函数局部变量,如果AO上有同名的值,则不做任何操作。如果没有,则将此变量赋值给AO,并且值为undefined。 3:函数声明,如果AO上有,则会将AO上的对象覆盖。如果没有,则不做任何操作。 函数内部无论是使用参数还是使用局部变量都到AO上找。 * */
标签:console,log,AO,js,词法,var,函数 来源: https://www.cnblogs.com/andy0816/p/15136863.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。