进阶任务三
2017-07-24 本文已影响0人
诺夏_
函数声明和函数表达式有什么区别?


什么是变量的声明前置?什么是函数的声明前置
JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。
JavaScript引擎将函数名视同变量名,所以采用function命令声明函数时,整个函数会像变量声明一样,被提升到代码头部。
arguments 是什么
arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数,arguments[1]就是第二个参数,以此类推。这个对象只有在函数体内部,才可以使用。
函数的"重载"怎样实现
立即执行函数表达式是什么?有什么作用
(function(){ /* code */ }());
一是不必为函数命名,避免了污染全局变量
求n!,用递归来实现
以下代码输出什么?

写一个函数,返回参数的平方和?

如下代码的输出?为什么

因为var a=1存在变量提升,而b未定义,会报错
如下代码的输出?为什么

采用函数表达式声明函数时,不能在声明前调用,虽然声明提升,但未被赋值,所以还是会报错。
如下代码输出什么? 写出作用域链查找过程伪代码
function getInfo(name, age, sex){
console.log('name:',name);
console.log('age:', age);
console.log('sex:', sex);
console.log(arguments);
arguments[0] = 'valley';
console.log('name', name);
}
getInfo('饥人谷', 2, '男');
getInfo('小谷', 3);
getInfo('男');