我在Flex中偶然发现了一件奇怪的事情。我创建了一个整数变量:
var foo:int = 1;
在调试器中,它说foo是 Number ,值为1.
这对我来说不是一个大问题,但在进行远程服务调用时似乎正在发送Numbers而不是整数。这里发生了什么?
答案 0 :(得分:0)
我认为输出尝试尽可能原始 - 这是一个有趣的例子:
var i:int = 1;
var mc:MovieClip = new MovieClip();
trace(typeof(i)); // number
trace(typeof(mc)); // object
做了一些reasearch:typeof只能返回这六个结果:
Array -> object
Boolean -> boolean
Function -> function
int -> number
Number -> number
Object -> object
String -> string
uint -> number
XML -> xml
XMLList -> xml
“评估表达式并返回一个 指定表达式的字符串 数据类型。结果仅限于 六个可能的字符串值:布尔值, 功能,数字,对象,字符串和 XML。如果您将此运算符应用于 用户定义的类的实例, 结果是字符串对象。该 包含typeof运算符 向后兼容性。使用是 运算符检查类型兼容性。“
答案 1 :(得分:-1)
我发现了一篇关于int vs Number:Avoid ints in ActionScript的有趣帖子。鉴于此,并且int也是一个对象:ActionScript Reference会发生的事情是调试器将int转换为Number并显示其值可能只是因为Number是一个更宽的类型并且可以保持所有的int而反之则不是真。