为什么要使用|| 在变量函数声明?

Mit*_*tch 14 javascript

我正在学习js,我遇到了一个例子,其中|| 在将var声明为函数时使用:

var Triangulation = Triangulation || (function() {   
...   
Run Code Online (Sandbox Code Playgroud)

在我看来,这是检查在分配var之前是否已经声明了var.环顾网络,我没有看到使用这种方法的任何其他示例.采取这种方法的原因是什么?

var Triangulation = function() {   
...  
Run Code Online (Sandbox Code Playgroud)

谢谢

Rub*_*mov 19

这意味着triangulation变量已经定义的可能性,如果是,triangulation变量返回自身,如果尚未定义 - 匿名函数将返回新变量的值triangulation.

并且有重要/敏感的东西var.这是一项棘手的业务.例如:

<script>
var triangulation = function (){return(1);};
</script>
Run Code Online (Sandbox Code Playgroud)

实际意味着:

<script>
window.triangulation = function (){return(1);};// because "triangulation" is in global                       
                                               // namespace and "var" in this case 
                                               // means nothing "local", as you may expect
</script>
Run Code Online (Sandbox Code Playgroud)

下次,初始化var triangulation = ...覆盖全局变量.如果你想保留它,你必须写:

var triangulation = triangulation || function (){...}; 
Run Code Online (Sandbox Code Playgroud)

  • 此模式的常见用法是在创建"名称空间"时.例如,您可以定义:$ = $ || {}; $ .app = $ .app || {}; $ .app.something = $ .app.something || {}; 然后,您可以在每个文件的顶部包含相同的基本内容,以确保您的名称空间已定义,并且您的定义不会互相破坏. (7认同)