函数易错知识点整理

 

函数易错题目合集

var f1 = function f2(){};  
f1.name  //"f2"


var f1 = function f2(){};  
f2.name  //报错:f2 is not defined

var f1 = function f2(){}; 
console.log(f2)  
//f2 is not defined(f2 不存在,而且 f2 不是 undefined)

function f(){console.log(this)}; 
f.call(1)  //Number 对象 1

function f(){'use strict' console.log(this)}; 
f.call(1)  //1

function f(){console.log(this)}; 
f.call()  //Window 对象

function f(){'use strict' console.log(this)};  
f.call()   //undefined

var a = console.log(1); 
a  //undefined

function f(){ return 1}; a = f ; 
a //函数 f

function f(){ return 1}; var a = f.call() ; 
a //1

var a = 1,2; 
a //报错

var a = (1,2); 
a //2

var a = (1, console.log(2)); 
a //undefined


function f(){
    return function f2(){}
}
var a = f.call()
a //函数 f2


function f(){
    return function f2(){}
}
var a = f.call()
var b = a.call()
b //undefined


function f1(){
    console.log(this)
    function f2(){
    }
}
var obj = {name: 'obj'}
f1.call( obj )
//obj 对象


function f1(){

    function f2(){
        console.log(this)
    }
    f2.call()
}
var obj = {name: 'obj'}
f1.call( obj )
//Window 对象


function f1(){
    console.log(this) // 第一个 this
    function f2(){
        console.log(this) // 第二个 this
    }
    f2.call()
}
var obj = {name: 'obj'}
f1.call( obj )
//为什么两个 this 值不一样?
//this 就是 call 的第一个参数,第一个 this 对应的 call 是 f1.call(obj),第二个 this 对应的 call 是 f2.call()
//this 和 arguments 都是参数,参数都要在函数执行(call)的时候才能确定

 

posted @ 2018-05-24 22:00  Nola  阅读(163)  评论(0编辑  收藏  举报