首页 > 试题广场 >

请描述打印结果并解释原因:

[问答题]
请描述打印结果并解释原因:

"use strict"声明以严格模式执行

输出:“Michael”
解释:这里是person.pro调用了getName(),getName()里面的this指向了person.pro,所以这里的this.name == "Michael"

输出:error报错
解释:将person.pro.getName方法赋给了pepole,然后在全局执行上下文中调用了pepole(),因为是在严格模式下执行,所以pepole()里面的this是指向undefined,undefined又获取name属性,最后导致报错
发表于 2020-07-28 16:14:46 回复(0)
1.第一个打印是person.pro.getName的结果,getName返回的结果是this.name,因为this指向的是调用函数的环境对象,getName函数是由person.pro调用的,所以this指向的是person.pro,this.name为person.pro.name即'Michael'。
2.由开始的字符串'use strict'知道本代码段使用的是严格模式,在严格模式下,this的指向不能全局变量,为全局的会报错。
测试代码:
'use strict'
var name = 'Jay'
var person ={
    name : 'Wang',
    pro:{
        name:'Michael',
        getName:function(){
                return this.name;
        }    
    }
}
console.log(person.pro.getName());
var pepole = person.pro.getName;//这里我猜是‘=’的。。。
console.log(pepole());


发表于 2020-07-22 17:58:39 回复(0)
严格模式下,全局this 指向undefined
发表于 2022-06-14 16:14:59 回复(0)