一个分号引起的语法错误

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,然后报了那样的错误。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,700评论 0 13
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,671评论 0 21
  • 本博客转自:「作者:若愚链接:https://zhuanlan.zhihu.com/p/22361337来源:知乎...
    韩宝亿阅读 7,744评论 0 3
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,161评论 0 5
  • 对于function中的this,需要明确一点的是它只有在function执行的时候才能被确定。并且this指的是...
    切磋琢磨_FE阅读 10,179评论 0 0

友情链接更多精彩内容