1.代码:
<script type="text/javascript">
function sum(){
if(arguments.length==2){
return arguments[0]+arguments[1];
}else if(arguments.length==1){
var first=arguments[0];
return function(second){
return first+second;
};
}
}
console.log(sum(2,3));//5
console.log(sum(2)(3));//5
</script>
答案: 解析:arguments.length代表的是实际传入参数个数(实参个数)
2.代码:
<script type="text/javascript">
var fn=90;
var o={
fn:function(){
console.log(fn)
}
}
console.log(o.fn());
</script>
答案:
3.代码:
<script type="text/javascript">
var User={
count:1,
getCount:function(){
return this.count//window
}
}
var fn=User.getCount;
console.log(fn());//undefined
</script>
答案: 解析:在全局中没有声明count,所以undefined
4.代码:
<script type="text/javascript">
var f=true;
if(f===true){
var a=10;
}
function fn(){
var b=20;
c=30;//在全局声明了一个 c
}
fn();
console.log(a);//10
console.log(b);//报错
console.log(c);//30
</script>
答案:10,报错,30
5.代码:
<script type="text/javascript">
a=new Array(2,3,4,5,6);
sum=0;
for(i=1;i<a.length;i++)
sum+=a[i];
console.log(sum)//3+4+5+6=18
</script>
答案:
6.代码:
<script type="text/javascript">
function fun(n,o){
console.log(o)
return {
fun:function(m){
return fun(m,n);
}
};
}
var a=fun(0);//undefined
a.fun(1);//m=1,n=0 ==>n=1,o=0 ==>0
a.fun(2);//0
a.fun(3);//0
var b=fun(0).fun(1).fun(2).fun(3);//undefined,0,1,2
/*1.
function fun(0,o){
console.log(o)//undefined
return {
fun:function(1){
return fun(1,0)
}
}
}
2.function fun(1,0){
console.log(0)//0
return {
fun:function(2){
return fun(2,1)
}
}
}
3.function fun(2,1){
console.log(1)//1
return {
fun:function(3){
return fun(3,2)
}
}
}*/
var c=fun(0).fun(1);//undefined,0
/*function fun(0,o){
console.log(o)
return {
fun:function(1){
return fun(1,0)
}
}
}*/
c.fun(2);//1
c.fun(3);//1
</script>
答案:
7.代码:
<script type="text/javascript">
var buttons=[{name:"b1"},{name:"b2"},{name:"b3"}];
function bind(){
for(var i=0;i<buttons.length;i++){
buttons[i].onclick=function(){
console.log(i)
}
}
};
bind();
/*for循环:
1.buttons[0].onclick=function(){console.log(i)}
2.buttons[1].onclick=function(){console.log(i)}
3.buttons[2].onclick=function(){console.log(i)}*/
buttons[0].onclick();//3
/*当onclick运行时,前面的代码已经运行完了,所以
console.log(2+1)=3*/
buttons[1].onclick();//3
buttons[2].onclick();//3
</script>
答案:
8.代码:
<script type="text/javascript">
(function(){
var a=b=3;
/*
var a;
var b=3
*/
})();
console.log("a defined?"+(typeof a!=="undefined"));
//typeof a="undefined"
//"a defined?false"
console.log("b defined?"+(typeof b!=="undefined"));
//typeof b="number"
//"b defined?true"
console.log(b);//3
console.log(typeof a);//undefined
</script>
答案:
9.代码:
<script type="text/javascript">
var fn1="ivan";
var name="good";
var fn1=function(y){
y();
}
function fn1(x){
x(name);
}
function fn2(x){
console.log(x);
console.log(name);
var name="hello";
console.log(name);//hello
}
fn1(fn2);
/*
var fn1
var name
function fn1(x){
x(name);
}
function fn2(x){
var name
console.log(x);//undefined
console.log(name);//undefined
name="hello";
console.log(name);//hello
}
fn1="ivan";
name="good";
fn1=function(y){
y();//fn2()
}
fn1(fn2);
*/
</script>
答案:解析:同名标识符提升,函数提升
10.代码:
<script type="text/javascript">
var num=5;
function func1(){
var num=3;
var age=4;
function func2(){
console.log(num);
var num="ivan";
function fun3(){
age=6;
}
fun3();
console.log(num);
console.log(age);
}
func2();
}
func1();
/*
var num=5;
function func1(){
var num=3;
var age=4;
function func2(){
var num
console.log(num);//undefined
num="ivan";
function fun3(){
age=6;
}
fun3();
console.log(num);//ivan
console.log(age);//6
}
func2();
}
func1();*/
</script>
答案:
11.代码:
<script type="text/javascript">
function changeObjectProperty(o){
o.siteUrl="http://www.csser.com/";
o=new Object();
o.siteUrl="http://www.popcg.com/";
}
var CSSer=new Object();
changeObjectProperty(CSSer);
console.log(CSSer.siteUrl)
/*
var CSSer;
function changeObjectProperty(o){
o.siteUrl="http://www.csser.com/";
o=new Object();
o.siteUrl="http://www.popcg.com/";
}
CSSer=new Object();//{}
changeObjectProperty(CSSer);
//全局:CSSer:{siteUrl:"http://www.csser.com/"}
//局部:CSSer:{siteUrl:"http://www.popcg.com/"}
console.log(CSSer.siteUrl)//"http://www.csser.com/"
*/
</script>
答案:解析:引用数据,作用域
12.代码:
<script type="text/javascript">
var x=8;
var objA={
x:"good",
y:32//5
}
function add(x,y){
console.log(x.y+y);//"good5"
}
function fn(x,y){
x.y=5;
y(x,3);//add(x,3)=add(objA,3)==>objA.y+3=8
}
fn(objA,add);
console.log(objA);//objA={x:"good",y:5}
</script>
答案: