作家
登录

Javascript中的函数声明与函数表达式(奇技淫巧)

作者: 来源:www.28hudong.com 2013-03-30 00:58:23 阅读 我要评论

举一个例子: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 试一下就知道这段代码的意思就是声明一个函数,然后立刻执行,因为Javascript中的变量作用域是基于函数的,所以这样可以避免变量污染,但这里的位运算符“~”乍一看让人摸不到头脑,如果去掉它再运行则会报错:SyntaxError。 在阐述为什么之前,让我们先来明确Javascript中的两个概念:函数声明和函数表达式: 先来看看什么样的是函数声明: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 再来看看什么样的是函数表达式: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 现在回头看看文章开头的问题,为什么去掉位操作符“~”后运行会报错,这是因为从语法解析的角度看,Javascript不允许在函数声明的后面直接使用小括号,而函数表达式则没有这个限制,通过在函数声明前面加上一个“~”操作符,就可以让语法解析器把后面看成是函数表达式,同样的,在函数声明前面加上“!,+,-”等操作符也是可行的。 那我们为什么不使用下面这种函数表达式的方式呢? [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 虽然从语法解析的角度看没有问题,但是上面的代码存在弊端,它引入了一个变量,可能会污染现有的运行环境,带来潜在的问题。 使用位操作符“~”的方法多少显得有点奇技淫巧,其实把函数声明用小括号套起来更易读: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 弄明白了原理,不管遇到什么写法,都不会再丈二和尚摸不着头脑了。

  推荐阅读

  js定义对象或数组直接量时各浏览器对多余逗号的处理(json)

1、js引擎在代码载入时进行语法分析,如果js写的不规范则语法分析通不过。这时候的错误称为语法错误 2、语法分析通过了,js引擎会执行代码。执行期间发生的错误称为运行错误 不同引擎处理这2种错误的提示不太一样。>>>详细阅读


本文标题:Javascript中的函数声明与函数表达式(奇技淫巧)

地址:http://www.17bianji.com/kaifa2/JS/24842.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)