请教JavaScript学习过程中碰到的两个问题。

ttod_qzstudio 2017-11-12 12:29:11
各位大神双11快乐!
请教两个问题。
第一个:
最近看一本JavaScript的书,里面的函数(类似C#类的这种情况吧)定义总是类似这么写:
var Sprite = function(){}
但是我发现如果我写成:
Sprite(){}
这种形式运行起来也没什么问题,不过作者David Geary似乎是个超级猛人,按说应该是有什么特殊的好处才这么写吧,哪位能给讲讲这两种写法的却别呢?
第二个:
var Sprite = function (name,painter) {
if(name !== undefined) this.name = name;
if(painter !== undefined) this.painter = painter;
}
上面的代码为什么不写成
var Sprite = function (name,painter) {
this.name = name;
this.painter = painter;
}
如果形参name没有赋值,那不就是undefined么?那this.name就等于undefined好了,为何还要if(name !== undefined) this.name = name;这么写呢?
...全文
149 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
x80819091 2017-11-12
  • 打赏
  • 举报
回复
1.应该是在一个class里面吧,es6的语法

this.sprite=function(){} //等于
sprite(){}
2. 没有必要,检不检查都一样
  • 打赏
  • 举报
回复
var申明的只有再执行到赋值语句的时候才会赋值,所以如果你调用Sprite 函数在 var Sprite =之前会报错
Sprite ();///报错,用function Sprite (){}这样申明的不会报错
var Sprite = function(){}
javascript运行机制浅析 就构造函数来说第二个的第一段 if(name !== undefined) 这种判断没什么用,多此一举

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧