`

一个对Array类型强制转换的小陷阱

    博客分类:
  • FLEX
阅读更多
AS的类型转换有两种方式
第一种:
//括号形式
User(u).name = "zhangshan";

第二种:
//as表达式
(u as User).name = "zhangshan";

    对于一般的对象,这两种方法是等效的,转换失改时,第一种会抛异常,第二种会转换为空对象。
    但是对于数组Array,这两种是不一样的,as表达式的方法还是一样,不说了,使用括号就是不行,说一下。
//括号形式
var a:Object = new Array();
Array(a).push("zhangshan");
//这里会打出0来
trace(a.length);

    其实开发工具也有个警告,对数组使用强制转换等于新建了一个数组,所以对于数组只能用as表达式来进行转换。ArrayCollection没有类似问题。
分享到:
评论
1 楼 ibio 2010-05-05  
LZ 非常仔细。
通常涉及到类型转换时我用 as,基本都不会出错。

相关推荐

    Javascript中的陷阱大集合【译】

    #### 双等号(==)与类型强制转换 在JavaScript中,双等号`==`操作符在比较两个值时会进行类型转换,这意味着即使两边的数据类型不同,也会尝试将它们转换为相同类型再进行比较。例如: ```javascript "1" == 1 //...

    20-T20:php弱类型.zip

    例如,一个变量可以先存储一个整数,然后存储一个字符串,而无需显式转换。这种灵活性在某些情况下非常有用,但也会导致一些潜在的问题和陷阱。 1. **变量声明**:在PHP中,使用 `$var = value;` 即可声明并初始化...

    你不懂JS:类型与文法.pdf

    [[Class]]是一个内部表示,用于区分不同的对象类型。书中还讲解了封箱和开箱的概念,即如何将原始值转换为对应的包装对象(如Number、String、Boolean等),以及这些包装对象作为构造器的使用。理解这一过程对于正确...

    PHP中in_array函数使用的问题与解决办法

    首先,`in_array`函数的基本语法是 `in_array(search, array, strict)`,其中`search`是要查找的值,`array`是被搜索的数组,`strict`是一个可选参数,用来指定是否启用严格模式进行类型匹配。默认情况下,`strict`...

    C++大学教程,一本适合初学者的入门教材(part1)

    9.4 把基类指针强制转换为派生类指针 9.5 使用成员函数 9.6 在派生类中重定义基类成员 9.7 Public、Protected和Private继承 9.8 直接基类和间接基类 9.9 在派生类中使用构造函数和析构函数 9.10 将派生类对象...

    php数组合并array_merge()函数使用注意事项

    一种解决办法是强制类型转换,将非数组值转换成数组,例如 `(array)`。 示例: ```php $array1 = 1; $array2 = array('b' => 'cc'); $merged = array_merge((array)$array1, (array)$array2); print_r($...

    C++常用库函数

    - `reinterpret_cast`:强制转换,通常用于低级操作。 - `const_cast`:改变对象的const或volatile属性。 以上只是C++库函数的一小部分,实际使用中还有更多如时间操作(chrono)、迭代器(iterator)、智能指针...

    C++大学教程,一本适合初学者的入门教材(part2)

    9.4 把基类指针强制转换为派生类指针 9.5 使用成员函数 9.6 在派生类中重定义基类成员 9.7 Public、Protected和Private继承 9.8 直接基类和间接基类 9.9 在派生类中使用构造函数和析构函数 9.10 将派生类对象...

    js代码-设置与获取类型

    例如,如果你想确保一个变量始终是数字,可以使用Number()函数进行强制类型转换。 ```javascript let value = "123"; value = Number(value); if (isNaN(value)) { value = 0; // 当转换失败时设置默认值 } ``` 5...

    javascript陷阱 一不小心你就中招了(字符运算)

    在JavaScript中,当一个字符串与一个数字进行加法运算时,数字会自动转换成字符串,然后进行字符串拼接。这种行为有时会导致逻辑上的问题,尤其是在处理涉及数值计算的场景时。 **示例:** ```javascript let num ...

    C语言谜题.

    **知识点解释**:浮点数和整数之间的转换涉及类型强制转换。第一个 `printf` 试图将浮点数 `a` 直接作为整数输出,这会导致未定义行为。第二个 `printf` 使用 `(int)` 显式地将浮点数转换为整数,舍去小数部分。第三...

    开发中常用的25个JavaScript单行代码(小结)

    但要注意,`typeof null`会返回`'object'`,这是一个已知的陷阱。 10. **获取数组长度**:`length`属性用于获取数组长度,如`const arrayLength = myArray.length;` 11. **立即执行函数表达式(IIFE)**:`(() => ...

    捉虫历险记——常见C++Bug大围剿

    3. **类型转换与多态**:不正确的类型转换可能导致未定义行为,比如强制类型转换时忽视了对象的实际状态。使用`dynamic_cast`进行安全的向下转型,避免`reinterpret_cast`和`const_cast`的滥用。同时,了解虚函数和...

    test

    在IT行业中,TypeScript是一种广泛使用的强类型编程语言,它是JavaScript的一个超集,旨在提供更安全、可维护和高效的开发环境。"test"这个标题可能是某个项目或教程的名字,而描述"test"可能指的是对TypeScript特性...

    PHP 的比较运算与逻辑运算详解

    - 类型转换是PHP中的重要部分,可以使用括号强制转换类型。例如,`(int)`或`(string)`。 - 字符串转换为数字时,PHP会尝试解析字符串的左侧数字部分。例如,`'abc'*1`返回0,`'012'*1`返回12,`'0x12'*1`返回18...

Global site tag (gtag.js) - Google Analytics