进阶任务三

函数声明和函数表达式有什么区别?

进阶任务三_第1张图片
image.png
进阶任务三_第2张图片
image.png

什么是变量的声明前置?什么是函数的声明前置
JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。
JavaScript引擎将函数名视同变量名,所以采用function命令声明函数时,整个函数会像变量声明一样,被提升到代码头部。

arguments 是什么
arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数,arguments[1]就是第二个参数,以此类推。这个对象只有在函数体内部,才可以使用。

函数的"重载"怎样实现

立即执行函数表达式是什么?有什么作用

(function(){ /* code */ }());

一是不必为函数命名,避免了污染全局变量

求n!,用递归来实现

以下代码输出什么?

进阶任务三_第3张图片
屏幕快照 2017-08-04 上午8.08.05副本.png

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

进阶任务三_第4张图片
屏幕快照 2017-07-22 下午12.26.06.png

如下代码的输出?为什么

进阶任务三_第5张图片
屏幕快照 2017-08-04 上午8.16.51副本.png

因为var a=1存在变量提升,而b未定义,会报错

如下代码的输出?为什么


进阶任务三_第6张图片
屏幕快照 2017-07-24 上午9.44.18.png

采用函数表达式声明函数时,不能在声明前调用,虽然声明提升,但未被赋值,所以还是会报错。

如下代码输出什么? 写出作用域链查找过程伪代码

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('男');

你可能感兴趣的:(进阶任务三)