视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Javascript中的函数声明与函数表达式(奇技淫巧)_javascript技巧
2020-11-27 20:58:16 责编:小采
文档


举一个例子:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
试一下就知道这段代码的意思就是声明一个函数,然后立刻执行,因为Javascript中的变量作用域是基于函数的,所以这样可以避免变量污染,但这里的位运算符“~”乍一看让人摸不到头脑,如果去掉它再运行则会报错:SyntaxError。

在阐述为什么之前,让我们先来明确Javascript中的两个概念:函数声明和函数表达式:

先来看看什么样的是函数声明:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
再来看看什么样的是函数表达式:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
现在回头看看文章开头的问题,为什么去掉位操作符“~”后运行会报错,这是因为从语法解析的角度看,Javascript不允许在函数声明的后面直接使用小括号,而函数表达式则没有这个,通过在函数声明前面加上一个“~”操作符,就可以让语法解析器把后面看成是函数表达式,同样的,在函数声明前面加上“!,+,-”等操作符也是可行的。

那我们为什么不使用下面这种函数表达式的方式呢?


[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
虽然从语法解析的角度看没有问题,但是上面的代码存在弊端,它引入了一个变量,可能会污染现有的运行环境,带来潜在的问题。

使用位操作符“~”的方法多少显得有点奇技淫巧,其实把函数声明用小括号套起来更易读:


[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
弄明白了原理,不管遇到什么写法,都不会再丈二和尚摸不着头脑了。

下载本文
显示全文
专题