JavaScript关于this的绑定与涉及到函数的调用方式

作者:日期:2017-11-24 15:12:12 点击:77

 JavaScript关于this的绑定与涉及到函数的调用方式

1.请问以下程序代码输出结果是什么?

var name = 'Thte Window';
var object = {
    name: 'My Object',
    getNameFunc: function() {
        return function() {
            return this.name;
        };
    }
};
alert(object.getNameFunc()()); //输出结果是Thte Window

考点:调用getNameFunc方法的虽然是object,但是getNameFunc返回的是一个匿名函数,匿名函数的执行环境具有全局性,所以this指向window。

2.请问以下程序代码运行结果:

var name = 'Thte Window';
var object = {
    name: 'My Object',
    getNameFunc: function() {
        return function() {
            return this.name;
        };
    }
};
alert(object.getNameFunc()()); //输出结果是Thte Window

考点:this指向调用者arr。输出的arr是数组类型,会隐式调用toString()方法输出每项。

3.求出数组中的最大值 var a=[33,5,77,88,9,31,22]

var a=[33,5,77,88,9,31,22];
alert(Math.max.apply(null,a));//输出结果是88

考点:将数组作为apply的参数传入,返回最大值,由于不需要借用对象,所以第一个参数可以为任意值,但不可以省略。

4.请看以下程序代码:请问会弹出什么结果来?

var a='ts';
function A(){
	alert(a);//输出结果是undefined
	var a=1;
	alert(a);//输出结果是1
	}
A();

考点:此题考预解释机制,此题有一个全局变量a和一个函数变量a,当预解释阶段,函数内部a初始化为undefined,只定义未赋值,内部变量a优先级高于外部,当运行函数到第50行时函数内部的变量a此时未赋值,仍然是undefined,当进行到第52行时由于已经进行了赋值运算,所以此时a等于1。

5.请问以下 程序代码输出结果是什么?

var a=1;
function b(){
	a=10;
	return;
	function a(){}
	}
b()
alert(a);////输出结果是1

知识点:当预解释阶段,函数内部的a被定义为一个function,当函数执行到99行时局部变量a被初始化为一个数值类型的10,但是出了这个b函数后,当前作用域就不是b函数了,而是全局作用域,此时全局变量a生效,所以弹出的a值为1。

上一篇: Ajax实例解析,异步机制以及优缺点

下一篇: JavaScript如何实现面向对象和继承机制(2)