相关疑难解决方法(0)

javascript中是否存在null-coalescing(Elvis)运算符或安全导航运算符?

我将通过例子解释:

猫王运营商(?:)

"Elvis运算符"是Java三元运算符的缩写.这方面的一个实例是,如果表达式解析为false或null,则返回"合理的默认值".一个简单的例子可能如下所示:

def gender = user.male ? "male" : "female"  //traditional ternary operator usage

def displayName = user.name ?: "Anonymous"  //more compact Elvis operator
Run Code Online (Sandbox Code Playgroud)

安全导航操作员(?.)

安全导航操作符用于避免NullPointerException.通常,在引用对象时,可能需要在访问对象的方法或属性之前验证它是否为null.为了避免这种情况,安全导航操作符将只返回null而不是抛出异常,如下所示:

def user = User.find( "admin" )           //this might be null if 'admin' does not exist
def streetName = user?.address?.street    //streetName will be null if user or user.address is null - no NPE thrown
Run Code Online (Sandbox Code Playgroud)

javascript jquery groovy safe-navigation-operator

185
推荐指数
13
解决办法
8万
查看次数

当代数在表达式之前时,代字号会做什么?

var attr = ~'input,textarea'.indexOf( target.tagName.toLowerCase() )
           ? 'value'
           : 'innerHTML'
Run Code Online (Sandbox Code Playgroud)

我在一个答案中看到了它,我以前从未见过它.

这是什么意思?

javascript syntax bit-manipulation

182
推荐指数
5
解决办法
5万
查看次数

使用按位OR 0来设置数字

我的一位同事偶然发现了一种方法来使用按位或者:

var a = 13.6 | 0; //a == 13
Run Code Online (Sandbox Code Playgroud)

我们在谈论它并想知道一些事情.

  • 它是如何工作的?我们的理论是使用这样的运算符将数字转换为整数,从而删除小数部分
  • 它有什么优势Math.floor吗?也许它快一点?(双关语不打算)
  • 它有任何缺点吗?也许它在某些情况下不起作用?清晰度是显而易见的,因为我们必须弄清楚,而且,我正在写这个问题.

谢谢.

javascript floating-point bit-manipulation

178
推荐指数
6
解决办法
4万
查看次数

':'(冒号)在JavaScript中有什么作用?

我正在学习JavaScript,在浏览jQuery库时,我看到:(冒号)被大量使用.这在JavaScript中用于什么?

// Return an array of filtered elements (r)
// and the modified expression string (t)
   return { r: r, t: t };
Run Code Online (Sandbox Code Playgroud)

javascript

170
推荐指数
11
解决办法
13万
查看次数

如果未定义,javascript设置变量

我知道我可以测试一个javascript变量然后定义它,如果它是未定义的,但是没有一些方法可以说

var setVariable = localStorage.getItem('value') || 0;

似乎是一种更清晰的方式,我很确定我已经在其他语言中看到过这种情况.

javascript undefined

159
推荐指数
7
解决办法
18万
查看次数

这个JavaScript/JQuery语法如何工作:( function(window,undefined){})(window)?

你有没有看过JQuery 1.4源代码的内幕,并注意到它是如何以下列方式封装的:

(function( window, undefined ) {

  //All the JQuery code here 
  ...

})(window);
Run Code Online (Sandbox Code Playgroud)

我读过一篇关于JavaScript Namespacing的文章和另一篇名为" 一对重要的Parens "的文章,所以我知道这里发生了什么.

但我以前从未见过这种特殊的语法.在那undefined做什么?为什么window需要通过然后再次出现?

javascript syntax jquery

153
推荐指数
5
解决办法
4万
查看次数

函数调用后的两组括号

我正在研究过滤器在Angularjs中是如何工作的,我看到我们需要发送2组括号.

$filter('number')(number[, fractionSize])
Run Code Online (Sandbox Code Playgroud)

它意味着什么,我们如何使用JavaScript处理它?

javascript angularjs

151
推荐指数
3
解决办法
4万
查看次数

什么是JavaScript >>>运算符以及如何使用它?

我正在查看Mozilla的代码,它为Array添加了一个过滤方法,它有一行代码让我很困惑.

var len = this.length >>> 0;
Run Code Online (Sandbox Code Playgroud)

我以前从未见过用于JavaScript的>>>.
它是什么,它做了什么?

javascript operators bit-shift

141
推荐指数
6
解决办法
3万
查看次数

什么是"|" (单管)用JavaScript做什么?

console.log(0.5 | 0); // 0
console.log(-1 | 0);  // -1
console.log(1 | 0);   // 1
Run Code Online (Sandbox Code Playgroud)

为什么0.5 | 0返回零,但任何整数(包括负数)都返回输入整数?单管("|")做什么?

javascript

138
推荐指数
4
解决办法
7万
查看次数

ES6/2015中的零安全财产访问(和条件分配)

是否有一个null-safe属性访问(空传播/存在)操作者在ES6(ES2015/JavaScript.next /和谐)等?.的CoffeeScript例如?或者是否计划用于ES7?

var aThing = getSomething()
...
aThing = possiblyNull?.thing
Run Code Online (Sandbox Code Playgroud)

这将大致如下:

if (possiblyNull != null) aThing = possiblyNull.thing
Run Code Online (Sandbox Code Playgroud)

理想情况下,解决方案不应该分配(甚至undefined)到aThing如果possiblyNullnull

javascript coffeescript ecmascript-6 babeljs

137
推荐指数
6
解决办法
7万
查看次数