这类题型涉及到的知识点特别广泛,以此问来记录遇到的JS输出结果问题——长期更新
1.涉及到Function 的属性和方法
每个函数都包含两个属性:length和prototype。其中,length属性表示函数希望接收的命名参数的个数。(JS高级程序设计P116)
function fun(a,b){ console.log(fun.length);}fun(); // 2
2.JS中所有函数的参数都是按值传递
涉及到JS的传参问题,在JS中传参都是按值传递的。
ECMAScript中所有的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一变量一样。在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量。在向参数传递引用类型的值时,会把这个值在内存中的地址复制一个给局部变量,因此这个局部变量的变化会反映在函数的外部。 传递过去的foo是一个副本,它最终还是指向内存堆中的同一个方法,所以最后还是相当于调用了全局中的foo();PS:详细请链接到页面
var z = 10;function foo(){ console.log(z);}(function(funArg){ var z = 20; funArg(); //10})(foo);