在查看我在网上找到的一些代码时,我发现了这个特殊的代码行(Javascript):
function values(b) {
this.b = b || 0;
}
Run Code Online (Sandbox Code Playgroud)
我根本想不出来的目的是什么||0.如果我没有弄错,因为||返回一个布尔值,这个值b将始终是参数的布尔等效值.如果b传递为真(即1或true),那么b应该是真的; 否则,使用其中一个false值(即.NaN,0),这应该是假的.然后我解释如下:
b是true:
this.b = true || false; // will evaluate to true
Run Code Online (Sandbox Code Playgroud)
b是false:
this.b = false || false; // will evaluate to false
Run Code Online (Sandbox Code Playgroud)
我只是没有看到通过添加获得的价值||0.有人可以向我解释一下吗?
所以我遇到了一个答案,但这还不足以扩展我的知识库.
我一直在寻找x = x || y, zStackOverflow中的意义
我找到了这个. 构造x = x ||是什么 你的意思是?
但问题是什么, z呢?
我经常看到这些表达
window.something = window.something || {}, jQuery
我已经知道如果false在第一个参数上返回,那么{}将被分配给该something属性.
我的问题是,有什么, jQuery用?
有人可以启发我并用这个非常重要的知识吸引我吗?
更新 8/11/2014
所以我试着做试验.
var w = 0, x = 1,y = 2,z = 3;
var foo = w || x || y, z; //I see that z is a declared variable
console.log(foo); //outputs 1
Run Code Online (Sandbox Code Playgroud)
和它一样.
var w = 0, x = 1,y …Run Code Online (Sandbox Code Playgroud) 我试图用定义的构造函数定义一个Javascript类,其中params具有最合适的ES6语法.首先,很容易像这样定义它.
let param1 = 10;
let param2 = 'foo';
let param3 = 200;
let param4 = 'bar';
let props = {id: param1, options: { op1: param2, op2: param3, op3: param4 }};
console.log('Object props');
console.log(props);
class Test {
constructor(props){
this.id = props.id;
this.options = props.options;
}
}
let test1 = new Test(props);
console.log('Class test1');
console.log(test1.id);
console.log(test1.options.op2);Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用解构来定义默认值时,对于构造函数的一个参数(op2嵌套对象的属性options),我无法使其工作,而对于id对象的属性,我能够:
let param1 = 10;
let param2 = 'foo';
let param3 = 200;
let param4 = 'bar';
let props …Run Code Online (Sandbox Code Playgroud)Javascript代码:
var a = (b) ? b : 40;
Run Code Online (Sandbox Code Playgroud)
它正在运行,只是NetBeans说:"使用||运算符(列[在哪里?])".我没有找到任何解释.
它是什么?
谢谢!
我经常使用var options = options || {}默认为空对象的方式.它通常用于初始化选项对象,以防它未在函数调用的参数中传递.
事情是我在几个地方(博客文章,源代码)阅读,options || (options = {})更好地表达了开发人员的意图.有人可以详细说明吗?我没有看到两者之间的功能差异,所以我必须在这里找到一些东西.
---编辑
我在几个地方看过Backbone.js源代码,比如https://github.com/documentcloud/backbone/blob/0.9.2/backbone.js#L273
我想我也是在jQuery的源代码中也看到过它.并且在多个Js写作风格指南中蓬勃发展.
---编辑2代码示例:
var func = function(param, options) {
// How I do it
var options = options || {};
// How I should do it in the "same" way
options = options || {};
// The "other" way
options || (options = {});
}
Run Code Online (Sandbox Code Playgroud) 我遇到了这段代码:
<a ng-click= "item.statusId !== itemStatus.in || transfer()">
Run Code Online (Sandbox Code Playgroud)
我想我们可以概括为:
<element ng-click = "someVar !== someValue || doStuff()">
Run Code Online (Sandbox Code Playgroud)
然后我发现这篇文章是关于短路的,另一篇是关注的文章,一旦我知道它们被称为什么.但是,我仍然没有得到它.
如果第一个语句的计算结果为true,它是否基本上符合OR语句结束评估的原则?因此,如果第一个语句为真,则结束评估,如果为false,则在OR语句的后半部分运行该函数?(这是我要问的主要问题,其他一切都是额外的).
我想我得到的部分是编译器是否以不同方式解释此代码,或者它仍然计算为false并且只运行该函数.甚至不确定如何短语Q.
我刚刚看到有人传入函数的这个问题window.Module = window.Module || {}.
例如:
(function(module){
// do something with module
})(window.Module = window.Module || {});
Run Code Online (Sandbox Code Playgroud)
我理解如果window.Module未定义(或者就此而言是假的)那么{}就会被传入,但是设置中的重点是什么window.Module呢?
对于发布答案的人:
我把代码读作:
if(!(window.Module = window.Module)) {
// pass {} into function
}
else {
// pass window.Module = window.Module into function
// (which makes NO sense to me)
}
Run Code Online (Sandbox Code Playgroud) 我对在 Google Maps API 中找到的这段代码感到困惑:
window.google = window.google || {};
google.maps = google.maps || {};
Run Code Online (Sandbox Code Playgroud)
以及我在书中看到的其他代码:
var QQ = QQ || {};
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
为什么要在 JavaScript 文件的开头打印该代码?
通常,|| 意味着或者,但在这种情况下它意味着什么:
function getCharCount ( e,s ) {
s = s || ",";
return getInnerText(e).split(s).length;
}
Run Code Online (Sandbox Code Playgroud) 我在javascript应用程序中找到了以下代码行.
var auth = parent.auth = parent.auth || {};
Run Code Online (Sandbox Code Playgroud)
我知道现有的Object父对象是用auth Object扩展的,但我不明白parent.auth || {}这里做了什么.
javascript ×10
angularjs ×1
class ×1
constructor ×1
ecmascript-6 ×1
jquery ×1
netbeans ×1
parameters ×1
syntax ×1
use-strict ×1
variables ×1