Flex:条件分配

时间:2009-08-06 14:58:13

标签: flex compiler-construction language-features

If I use an Assignment within conditional, for e.g.
if(userType='admin')
Flex throws a warning,unlike Java, which throws an error.
Why should Flex be doing this, despite being one of the newest languages?

1100: Assignment within conditional.  Did you mean == instead of =?

2 个答案:

答案 0 :(得分:1)

因为赋值在Actionscript中有一个值,这使得该语法合法,并且它们在Java中没有值,这使得它不具备。之所以出现这种差异,是因为尽管最近出现了Java-izations,Actionscript仍然是ECMAScript的后代。这种设计的其他后果是能够做出这样的陈述:

var foo:Number = 0;
var bar:Number = 0;
foo = bar = 2;
assertEquals(2, foo);
assertEquals(2, bar);

IMO,这是它可能具有的最佳行为 - 它不会破坏与旧版本的Actionscript的兼容性,并且它不会为了手持操作而删除语言功能,但它确实会引起注意的常见错误用户。

答案 1 :(得分:0)

我的猜测是编译器可能会自动修复它?

尽管Flex会这样做但很有意思。

(顺便说一下,它不是“Flex”,它是Actionscript 3)