一个分号引起的语法错误

function Person() {}
Person.prototype.setName = function(name) {
  this.name = name;
}


(new Person()).setName('XiaoMing')

写一段测试脚本,原本没想到有问题,为了谨慎起见还是在console里面跑来一下,然后报了错误:

没想到是什么原因,开始了各种尝试。

拆开写也是OK的


后来请教别人发现是少了一个;,导致的语法报错。在prototype的赋值语句后面增加了一个;就OK了。

function Person() {}
Person.prototype.setName = function(name) {
  this.name = name;
};

(new Person()).setName('XiaoMing')

不知道从什么时候起,已经不习惯在末尾加分号了。这导致语法在实际运行的时候是这个样子的。

function Person() {}

Person.prototype.setName = function(name) {
  this.name = name;
}(new Person()).setName('XiaoMing')

然后

function(name) {
  this.name = name;
}(new Person())

变成了一个立即执行函数。这个函数没有返回值所以是undefined,然后报了那样的错误。

你可能感兴趣的:(一个分号引起的语法错误)