function sumOfSquares(){
}
var result = sumOfSquares(2,3,4)
var result2 = sumOfSquares(1,3)
console.log(result) //29
console.log(result2) //10
答案:
function sumOfSquares(){
var length = arguments.length,
result = 0,
parameter
for(var i = 0; i< length; i++){
parameter = arguments[i]
result = parameter*parameter + result
}
return result
}
sumOfSquares(2,3,4) //29
sumOfSquares(1,3) //10
5. 如下代码的输出?为什么
console.log(a); //undefined
var a = 1;
console.log(b); //error 不存在
==>
var a
console.log(a)
a = 1
console.log(b)
6. 如下代码的输出?为什么
sayName('world'); //hello world
sayAge(10); //error 不是一个函数
function sayName(name){
console.log('hello ', name);
}
var sayAge = function(age){
console.log(age);
};
==>
function sayName(name){
console.log('hello ', name);
}
var sayAge
sayName('world');
sayAge(10);
sayAge = function(age){
console.log(age);
};
7. 如下代码输出什么? 为什么
var x = 10
bar() //10
function foo() {
console.log(x)
}
function bar(){
var x = 30
foo()
}
1. bar()在全局作用域中没有找到值,然后在函数bar()中寻找,
2. 找到了一个foo()函数的调用,然后取函数foo()里找,要打印x,
3. 但函数foo()里没有定义x的值,去上一层作用域得到x=10,所以bar() =10
8. 如下代码输出什么? 为什么
var x = 10;
bar() //30
function bar(){
var x = 30;
function foo(){
console.log(x)
}
foo();
}
这一题和上一题的区别是函数foo()和函数bar()不是同级关系了
1. 我们先在函数bar()里找,找到了foo(),
2. 然后在foo()里找,打印x,x在foo()里找不到x的值
3. 在上一层的作用域里找到了var x = 30, 所以bar()值为30
9. 如下代码输出什么? 为什么
var a = 1
function fn1(){
function fn2(){
console.log(a)
}
function fn3(){
var a = 4
fn2()
}
var a = 2
return fn3
}
var fn = fn1()
fn() //输出2
1. 先去fn1()作用域去找,在fn1()函数里, return fn3,fn2,fn3同级,
2. 去fn3作用域里调用了函数fn2()
3. 我们再去fn2()作用域中,打印a,去上一级作用域中fn1()中找到var a = 2
4. 所以fn()输出2
10. 如下代码输出什么? 为什么
var a = 1
function fn1(){
function fn3(){
var a = 4
fn2()
}
var a = 2
return fn3
}
function fn2(){
console.log(a)
}
var fn = fn1()
fn() //输出1
1. 先去fn1()作用域去找,在fn1()函数里, return fn3,
2. 我么能进入到fn3()作用域中,调用fn2()
3. 因为fn1 和 fn2同级,所以在fn2()中打印a,就要在全局作用域中找a
4. 全局作用域var a = 1
5. 所以结果是1
11. 如下代码输出什么? 为什么
var a = 1
function fn1(){
function fn3(){
function fn2(){
console.log(a)
}
fn2()
var a = 4
}
var a = 2
return fn3
}
var fn = fn1()
fn() //输出undefined
1. 进入fn1()作用域中,return fn3() ,
2. 进入fn3()作用域看到调用调用函数fn2(),
3. 在fn3()作用域中找到fn2(),打印a,去上一级作用域中找a
4. var a = 4,由于变量声明前置 ==> var a
5. 结果是undefined
1. 立即执行函数表达式是什么?有什么作用?
立即执行函数就是
声明一个匿名函数
马上调用这个匿名函数
那么为什么还要用另一对括号把匿名函数包起来呢?
其实是为了兼容 JS 的语法。如果我们不加另一对括号,直接写成
function(){alert('我是匿名函数')}()
浏览器会报语法错误。所以我们在外面加一个括号()
让浏览器觉得我们语法正确.知道这是一个函数,需要调用2. 求n!,用递归来实现
3. 以下代码输出什么?
4. 写一个函数,返回参数的平方和?
5. 如下代码的输出?为什么
6. 如下代码的输出?为什么
7. 如下代码输出什么? 为什么
8. 如下代码输出什么? 为什么
9. 如下代码输出什么? 为什么
10. 如下代码输出什么? 为什么
11. 如下代码输出什么? 为什么
12.如下代码输出什么?为什么
13. 如下代码输出什么? 为什么
14.写一个浅拷贝函数
15.写一个深拷贝函数