在期望值的同时变得“未定义”

时间:2019-02-26 18:42:50

标签: javascript

我是学习javascript的初学者

测试“ this”关键字 下面的showWidth函数显示“未定义”,但是当我将“ let”更改为“ var”时,它按预期显示600。现在,我不确定我是否完全理解let和var :(。之间的区别。请通过下面给出的示例帮助我理解。谢谢您的时间。

let width = 600; // declared global variable 
let shape = {
  width: 300 // property inside an object
};
let showWidth = function() {
  document.write(this.width);
}
showWidth(); // undefined with let, 600 with var. I expected 600 in both cases

1 个答案:

答案 0 :(得分:0)

因此,问题是您尝试使用函数打印宽度,但是您的函数没有属性width。使用此功能时,您是在说这(即功能),因此,如果该功能不具有width属性,则会显示未定义。有一些方法可以做到。

第一个是:

var showWidth = function() {
  this.width = 500;
  document.write(this.width);
}

showWidth();

第二个选项:

var shape = {
         width: 200
};

var showWidth = function(obj) {
  document.write(obj.width);
}
showWidth(shape);

第三种选择:


var width = 200;

var showWidth = function(value) {
  document.write(value);
}
showWidth(width);