首页 > 试题广场 >

下面这段JS程序的执行结果是: var user = {

[单选题]
下面这段JS程序的执行结果是:
var user = {
 count : 1,
 getCount: function(){
  return this.count;
 }
}
var func = user.getCount
console.log(func())

  • this.count
  • 1
  • 报错
  • undefined
// 1.调用对象未声明的属性会undifned
    var user={};
    console.log(user.name);//undifned
    
    // 2.使用未赋值只声明的基本数据类型会undifned
    var one;
    console.log(one);//undifned
    
    // 3.使用未声明的变量会报错
    console.log(two);//new_file.html:15 Uncaught ReferenceError: two is not defined

在本题中,this指向的是window,window对象已经自动被浏览器声明了,只是还没有声明count属性,所以也是undifned
发表于 2019-08-22 11:46:34 回复(9)
因为在函数调用时,this才会发生绑定,而且是谁调用this,this就指向谁。在本题中,func的运行环境是全局,因此this指向全局对象。如果去掉this,那只是在全局调用了一个没有声明局部变量的方法。引用它就会报错。
发表于 2019-10-16 20:42:50 回复(0)
var func =user. getCount 等价于 var func=function(return this.count) 所以this指向window var func =user. getCount()表示调用方法 这个时候才输出1
编辑于 2019-11-04 22:36:27 回复(0)
func中的this指向的是window,所以会返回undefined。如果是没有加this才会是报错
发表于 2019-03-25 21:14:50 回复(4)
使用function关键字定义的函数,其内部this指针指向它的直接调用者,
var func = user.getCount, 此时相当于在window对象上绑定了一个变量,
即 window.func == user.getCount, 
那么此时func的直接调用者是window, window对象上无count数量,故输出undefined


编辑于 2020-03-17 20:56:53 回复(1)
  • 解析:因为var func = user.getCount时,函数并未调用,相当于
  • var func =function(){
  • return this.count;
  • }
  • 当调用func(),全局函数this指向window,而window里没有count这个属性,因此输出undefined。
     
发表于 2021-07-16 19:18:28 回复(0)
这题本质是this的指向问题:



所以题目中(如图1)返回undefined是因为指向的是window对象,而一个对象还没有声明的属性就是undefined,这一点和直接定义变量略微有些不一样



发表于 2020-04-01 17:38:39 回复(0)
调用对象中未声明的属性会undefined
调用只声明未赋值的属性会undefined
调用未声明的属性会报错
本题是全局window对象调用,但是window并没有这个属性undefined
发表于 2021-08-15 22:09:51 回复(0)
  • 执行 var func = user.getCount 时,相当于将 user 对象中的函数的代码赋值给 func 变量
  • 执行 func 时,相当于在全局环境下调用全局定义的函数,此时函数中的 this 指向全局对象 window,而全局对象没有 count 属性,返回 undefined
发表于 2022-08-19 20:59:49 回复(0)
因为在函数调用时,this才会发生绑定,而且是谁调用this,this就指向谁。在本题中,func的运行环境是全局,因此this指向全局对象。如果直接调用user.getCount() 指向的是user,结果为1
发表于 2020-09-03 10:36:38 回复(0)
<p>this是在运行的时候决定的,而不是在函数定义的时候决定</p>
发表于 2020-06-11 13:42:21 回复(0)
  1. user的属性count是在对象(object)上而不是在函数getCount上;
  2. 而user.getCount返回的是一个函数(function),函数体return this.cout,此时的this未指定;
  3. user.getCount赋值给func变量,调用console.log(func()),还是未指定this,默认this指向全局;
  4. 全局中没有变量count,所以返回的count是未声明变量undefined。
编辑于 2020-06-01 00:01:11 回复(0)
它也没说是在什么模式下.严格模式下不就报错了吗?
发表于 2021-10-02 13:57:44 回复(0)
本地的考察点在this的指向问题,调用时要明确当前的调用中this指向的是什么。
发表于 2020-02-11 09:37:21 回复(0)
执行时,this指向window对象,window.count未声明,所以返回undefined
发表于 2020-04-20 10:46:15 回复(1)
可以这样理解吗? func 并没有引用user的方法getCount,而是用getCount的函数体声明了一个函数 当调用func(),func函数开始执行,又由于普通函数内的this指向全局变量window,而window无count属性,此时打印出undefined
发表于 2023-04-20 14:52:16 回复(0)
this指向变了,如果赋值时候把user绑定到func就是1了。var func = user.getCount.bind(user);
发表于 2023-03-07 10:08:05 回复(0)
普通函数的this是谁调用指向谁,所以这里指向window
发表于 2022-09-12 16:43:44 回复(0)
为啥我的会报错?
发表于 2022-08-31 13:00:39 回复(0)
func => 等于
function(){
  return this.count;
}
相当于 明明命名函数 
function func(){
  return this.count;
}
执行的时候根据执行上下文找不到count。若在 func 同级var count =2变量,那则可以访问到并return 2。
直接调用user.getCount()方法,可以根据上下文找到count=>1 则return 1。

发表于 2022-08-24 10:09:47 回复(0)