有趣的是Ember,CoffeeScript优先

yuя*_*uяi 6 coffeescript ember.js

如果

 !Ember.isEmpty @get('a') #-> true
Run Code Online (Sandbox Code Playgroud)

 !Ember.isEmpty @get('b') #-> false
Run Code Online (Sandbox Code Playgroud)

那么为什么

 !Ember.isEmpty @get('a') and !Ember.isEmpty @get('b') #-> true
Run Code Online (Sandbox Code Playgroud)

或者是我的CoffeeScript?

Tin*_*ron 5

你遇到的问题是Coffeescript的优先级.你在javascript中的代码是:

!Ember.isEmpty(this.get('a') && !Ember.isEmpty(this.get('b')));
Run Code Online (Sandbox Code Playgroud)

您需要添加parens以使操作顺序更加明确:

!Ember.isEmpty(@get('a')) and !Ember.isEmpty(@get('b'))
Run Code Online (Sandbox Code Playgroud)

所以在javascript中它是:

!Ember.isEmpty(this.get('a')) && !Ember.isEmpty(this.get('b'));
Run Code Online (Sandbox Code Playgroud)