这个函数礼貌的向我的博客访问者问好. 它接收一个 name 和 profession 参数,atv,然后显示一条欢迎信息. 第二个参数接收一个默认值(如果没有传递或者传递了一个undefined).
函数嵌套 一个函数内部可以包含内部函数. 内部函数又再次可以包含内部函数。来看下代码.
wakeUpAndCode 这个函数包含两个内部函数 wakeUp 和 code. 当调用 wakeUpAndCode 后, 开始执行方法体. 外部方法只有两条执行语句, 分别是对 wakeUp 和 code方法的调用 . 调用 wakeUp 函数会在控制台输出字符 “I just woke up” . 调用 code 函数会在控制台输出字符 “I am ready to code now” . 内部函数可以访问所有外部函数的变量和参数. 但是内部函数是函数内一种私有类型的实现,它不能被它所在的函数之外的函数访问. 关于使用内部函数与闭包问题将在其他文章讨论. “ 自执行函数表达式 ” (IIFE, 读作"iffy" 好吧随你怎么叫) IIFE (即时执行函数)是一个声明完成马上执行的匿名函数,它长这样:
你只需要创建一个匿名函数,在方法定义结尾处加一对圆括号,然后把所有的代码再通过圆括号括起来. 最外层的括号里会把所有内容转化成表达式,直播,因为Java的括号里不能写程序语句. 函数定义后面的一对括号可以让函数立即执行. 任何在自执行函数体内定义的变量都是局部有效的,并且不能被任何此作用域之外的代码访问或改变. 看下面的代码. 这个函数不需要被调用就会自动执行.
把代码复制黏贴到 plunker 然后再浏览器控制台查看输出结果. 如果你不知道怎么打开浏览器控制台, 按F12键就会打开开发者工具. 然后点击 console 选项卡查看 console.log 语句的输出内容. IIFE 是一个很好的在代码段中创建局部作用域的方法. 这么做的好处是可以保护你的变量和函数被应用程序中的其他部分复写掉. 那 IIFE 还有什么其他的优势? 还有他们怎么解决全局变量污染问题? 等我下一篇关于自执行表达式的文章. 构造函数 一个函数可以作为构造函数使用,并且可以使用构造函数来创建新的对象. 这个特性使Java更加面向对象. 使用构造函数的优势是你可以创建很多预定义对象和方法. 如果你把构造函数与其他语言的类和对象关联起来,那么你就对了。 我们来建立一个 Programmer 函数,它有函数构造器,并且有属性和方法. 你可以把它当作一个类如果你使用其他语言.
这个函数接收三个参数,并使用三个属性和四个方法来创建一个Programmer对象. 上面的代码不用说了吧没,很简单的. 我可以使用下面的代码创建很多programmer对象.
当然也可以使用普通的字面语法来创建具有相同属性和方法的对象, 但我们要多次编写重复代码,这是一种很不好的编程实践. 如果你知道编程原则中的 DRY(Don't repeat yourself,不要重复造轮子?),你就会同意我的观点了. 构造函数可以让你定义一次对象,然后再任何时候实例化他们. 注意! 要记得使用 new 关键字来创建新的函数对象. 如果你忘记使用 new 关键字创建了一个对象像这样 ->
它会把所有的属性方法都添加的全局 window 对象中,这是非常可怕的. 这就是为什么要明确使用 ‘this’ 关键字防止变量添加到全局 window 对象中. 使用 new 设置当前上下文到刚刚创建的对象中. 不过, 有个方法可以解决这个问题 . 你可以改变你的构造函数的实现方式,让它的内容对象是范围安全的,然后再创建新对象, 那么你就可以愉快地忽略 new 关键字了.查看下面修改后的构造函数代码. 已经移除了一些不必要的内容. (责任编辑:本港台直播) |