函数声明和函数表达式有什么区别?
![](https://img.haomeiwen.com/i2455914/3e4d5063cd98377e.png)
![](https://img.haomeiwen.com/i2455914/341ec19ee54d1909.png)
什么是变量的声明前置?什么是函数的声明前置
JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。
JavaScript引擎将函数名视同变量名,所以采用function命令声明函数时,整个函数会像变量声明一样,被提升到代码头部。
arguments 是什么
arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数,arguments[1]就是第二个参数,以此类推。这个对象只有在函数体内部,才可以使用。
函数的"重载"怎样实现
立即执行函数表达式是什么?有什么作用
(function(){ /* code */ }());
一是不必为函数命名,避免了污染全局变量
求n!,用递归来实现
以下代码输出什么?
![](https://img.haomeiwen.com/i2455914/1bebd4caee715411.png)
写一个函数,返回参数的平方和?
![](https://img.haomeiwen.com/i2455914/07ebd003cc816806.png)
如下代码的输出?为什么
![](https://img.haomeiwen.com/i2455914/860bde35f8a66d09.png)
因为var a=1存在变量提升,而b未定义,会报错
如下代码的输出?为什么
![](https://img.haomeiwen.com/i2455914/8e60a0773dc16408.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('男');
网友评论