美文网首页
一个分号引起的语法错误

一个分号引起的语法错误

作者: 半ma | 来源:发表于2018-03-18 13:37 被阅读16次
    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,然后报了那样的错误。

    相关文章

      网友评论

          本文标题:一个分号引起的语法错误

          本文链接:https://www.haomeiwen.com/subject/nhvrqftx.html