**函数声明和函数表达式有什么区别 **
函数声明:function functionname(){}
;
函数表达式: var variable=function(){}
;
- 函数表达式可以省略标识符(函数名)。
- 函数声明会提升。
**什么是变量的声明前置?什么是函数的声明前置 **
console.log(i); var i=1;
//得到的结果是undefined; 说明var =i 被前置到console.log(i)前。
fn(); function fn(){ console.log("我是函数的变量声明"); };
//执行这段可以打印“我是函数的变量声明”,函数的声明被前置了。
arguments 是什么
arguments 是JavaScript里的一个内置对象,每个函数都有属于自己的一个arguments对象,它包括了函所要调用的参数。object对象。类数组。
**函数的重载怎样实现 **
js中可以用arguments参数实现类函数重载的功能。
function test1() { var text=""; for(var i=0;i<arguments.length;i++){ text+="参数"+i+":"+arguments[i]; } alert(text); }
arguments包含了传递给函数的所有参数,并且arguments.length根据实际传递参数的个数的不同而不同,arguments.length代表了实际传递给函数参数的个数。
*立即执行函数表达式是什么?有什么作用 **
立即执行函数表达式:(function(){ / code */ })();
建立一个函数作用域,相关局部变量和参数只在函数内有效
**什么是函数的作用域链 **
JavaScript中所有的量都是存在于某一个作用域中的,除了全局作用域, 每一个作用域都是存在於某个作用域中的,在试图访问一个变量时JS引擎会从当前作用域开始向上查找直到Global全局作用域停止。
当代码在一个环境中执行时,会创建变量对象的一个作用域链,用途是保证对执行环境有权访问的所有变量和函数的有序访问。
代码题:
function sumOfsquers() { var result=0; for(i=0;i<arguments.length;i++){ result+=arguments[i]*arguments[i]; } return result; }
console.log(a); //undefined,因为var a变量声明前置; var a = 1; console.log(b);
//is not defined,因为没有b变量的声明;
网友评论