我正在学习js,遇到了一个例子,在声明函数变量时使用了||:
var Triangulation = Triangulation || (function() {
...
在我看来,这是在分配变量之前检查它是否已经声明。
浏览网络时,我没有看到其他使用此方法的示例。采用这种方法与采用何种方法相比,有什么理由呢?
var Triangulation = function() {
...
谢谢
我正在学习js,遇到了一个例子,在声明函数变量时使用了||:
var Triangulation = Triangulation || (function() {
...
在我看来,这是在分配变量之前检查它是否已经声明。
浏览网络时,我没有看到其他使用此方法的示例。采用这种方法与采用何种方法相比,有什么理由呢?
var Triangulation = function() {
...
谢谢
triangulation
变量,如果已经定义,则triangulation
变量返回自身;如果尚未定义,则匿名函数将返回新变量triangulation
的值。还有一件重要/敏感的事情就是var
。这是一个棘手的问题。例如:
<script>
var triangulation = function (){return(1);};
</script>
实际上的意思是:
<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>
下次初始化var triangulation = ...
会覆盖全局变量。如果你想要保留它,你需要编写:
下次初始化var triangulation = ...
将覆盖全局变量。如果你想要保留它,你需要写:
var triangulation = triangulation || function (){...};
Triangulation
,然后使用短路求值为其分配新值。当您想要支持从浏览器到浏览器不同的功能时,这是一种常见的做法。requestAnimationFrame
。由于每个浏览器需要不同的供应商前缀,我们使用||
将正确的方法分配给变量,以支持所有浏览器。window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function( callback ){
window.setTimeout(callback, 1000 / 60);
};
})();
//whatever exists will be assigned to window.requestAnimFrame .
对于 || 运算符,JS 返回第一个表达式的值,该值评估为 truthy 值
例如:
A||B(假设 A 是空字符串,B 是整数(12))
上述表达式将返回 12(即第一个评估为 truthy 值的表达式)。
在您的情况下,我们正在检查是否已声明 Triangulation,然后我们需要计算函数表达式并将其分配给 Triangulation。
var Triangulation = Triangulation || (function() {
这通常用于命名空间包,其实现被分割在多个文件中,当您不一定知道(或不想管理)文件加载顺序时。通常,您可以使用以下方式:
var Namespace = Namespace || {}
Triangulation
类(如果已经定义)。在Javascript中,我们使用了几种运算符,例如&&(与)||(或)和!(非)运算符。
这些运算符也被称为逻辑运算符。
逻辑运算符主要用于控制程序流程。通常,您会将它们作为if、while或其他控制语句的一部分。
||运算符用于确定两个条件中是否有一个为真。
例如:
if (x==5 || y==5) { .... .... }
谢谢。