`
lixinye0123
  • 浏览: 323362 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

1.8. 逻辑运算

阅读更多

1.8. 逻辑运算
 
问题
我想检测两个值的大小
解决办法
使用==号来比较两个值,使用 isNaN( ) 来检测是否是有效值.
讨论
==号表达式总是返回布尔值来表示两个值是否相等。当两个数类型不同时,比较时会自动转换为相同的类型再进行比较,如字符型的6和数字型的6比较的话被认为相等。
trace(5 == 6);    // : false
trace(6 == 6);    // : true
trace(6 == "6");  // : true
trace(5 == "6");  // : false
默认的工程项目,在运行上面的代码会出错。因为编译器被设置为强类型编译检测。关掉强类型检测,会把数字型转换为字符型,然后再进行比较。一般不推荐关闭强类型检测,这样可能会引发一些隐蔽的错误不利于程序稳定。
当两个数值不相等时,!=操作符将返回true,否则为false
trace(5 != 6);    // : true
trace(6 != 6);    // : false
trace(6 != "6");  // : false
trace(5 != "6");  // : true
同样,只有在关闭强类型检测后才能编译通过。

平时要注意不要把==写成=,否则会出现无法预料的错误。比如:
var quantity:int = 5;
// 下面的代码是错误的,正确应为 if (quantity == 6)
if (quantity = 6) {
  trace("Rabbits are bunnies.");
}
trace("quantity is " + quantity);  // 输出: quantity is 6
 
可以使用 is 操作符来检测数据类型
var quantity:int = 5;
if (quantity is int) {
  trace("Yippee. It's an integer.");
}
然而有些数值是非法的。下面的代码中quantity 等于 NaN (一个表示无效数字的常数)
var quantity:Number = 15 - "rabbits";
NaN 虽然是无效的数值,但它的数据类型仍属于 Number ,
trace(typeof quantity);   // 显示: "number"
所以,为了测试有个number变量类型不是数字,但又是合法的number,尝试下这么写:
var quantity:Number = 15 - "rabbits";
if (quantity is Number) {
 
  //看起来好像正确,实际上是错误的,因为quantity != NaN 结果被认为都是false
  if (quantity != NaN) {
    trace("Yippee. It's a number.");
  }
}

为了检测一个数字是不合法的,要使用指定的函数isNaN( ) 看下面的例子:
var quantity:Number = 15 - "rabbits";
if (isNaN(quantity)) {
  trace("Sorry, that is not a valid number.");
}
如果要检测相反条件,只要取反就可以,比如为了检测一个变量是个合法的number,使用!isNAN( ),如下:
var quantity:Number = 15 - "rabbits";
if (!isNaN(quantity)) {
 trace ("That is a valid number.");
}
当然了你还可以使用<和>比较符号来比较两个值得大小。
trace(5 < 6);    // 显示: true
trace(5 > 5);    // 显示: false
还有<= 和>= 符号
trace(5 <= 6);   // 显示: true
trace(5 >= 5);   // 显示: true
ActionScript 数据类型的比较有两个情况。在ActionScript中,数据类型分为两类:基本类型
 (string, number, and Boolean) 和复合类型(object, sprite, and array)。当比较基本类型时,是比较他们的值,下面的例子中 quantity 和 total 被认为是相等的因为他们包含相同的值6
var quantity:Number = 6;
var total:Number = 6;
trace (quantity == total);         // 显示: true
然而,当比较符合数据类型时是通过他们的“引用”来比较。当两个引用所指向的对象完全相同才被认为是相等的,而不仅仅是对象的内容相同。例如,两个数组包含相同的内容,但是他们却不相等:
// 用相同的内容创建两个数组
var arrayOne:Array = new Array("a", "b", "c");
var arrayTwo:Array = new Array("a", "b", "c");
trace(arrayOne == arrayTwo);          // 显示: false
只要当引用指向同一个object, array, 或 sprite 才相等. 例子:
// 创建一个简单的数组
var arrayOne:Array = new Array("a", "b", "c");
// 创建另一个变量指向同一个数组
var arrayTwo:Array = arrayOne;
trace(arrayOne == arrayTwo);          // 显示: true
 
 
分享到:
评论

相关推荐

    actionscript cook book 中文版

    1.8. 逻辑运算 13 1.9. 执行条件语句 15 1.10. 执行复杂的条件语句 17 1.11. 某段时间重复执行一种操作 19 1.12. 长时间执行一个任务 20 1.13. 创建可重用代码 22 1.14. 增强代码可重用能力 24 1.15. 从方法中退出 ...

    Matlab基础及应用教程

    ..............................34 2.3.4 矩阵的代数运算....................逻辑运算...........54 2.4.5 数组和矩阵函数的通用形式...57 2.5 字符串运算...........................................59 2.5.1 字符串...

    IBM大型机汇编语言

    1.8 寄存器的约定 ................................................................................................................. 11 1.9 常数的定义 ......................................................

    c语言学习资料,整的可以用哦

    1.8 Turbo C的菜单功能表和功能键表、编辑命令表 ....................... 12 第二章 C语言上机实验内容 ................................................ 17 实验1 C程序的运行环境和运行一个C程序的方法 ..........

    R 语言简介

    1.8 R的命令、对大小写的敏感,等等. . . . . . . . . . . . . . . . . . 3 1.9 对已输入命令的记忆和更改. . . . . . . . . . . . . . . . . . . . . 4 1.10 命令文件的执行和输出的转向到文件. . . . . . . . . . ...

    Oracle从入门到精通

    3、数字和日期都可以使用数学运算符建立表达式。............. 4、定义空(NULL)值....................................... 5、别名................................................... 6、spool +路径............

    计组头歌实验:自己动手画CPU 1-12关源码 HUST 谭志虎老师 计算机硬件系统设计MOOC

    1.8位可控加减法电路设计、2.原码一位乘法器设计、3.MIPS运算器设计、4.汉字字库存储芯片扩展实验、5.寄存器文件设计、6. MIPS RAM设计、7.4路组相连cache设计、8. 单周期MIPS CPU设计、9.微程序地址转移逻辑设计、...

    第一章 逻辑代数基础.ppt

    1.2 逻辑代数中的三种基本运算 1.3 逻辑代数的基本公式和常用公式(无图) 1.4 逻辑代数的基本定理(无图) 1.5 逻辑函数及其表示方法 1.6 逻辑函数的公式化简法(无图) 1.7 逻辑函数的卡诺图化简法 1.8 具有无关项...

    数字电子技术

    太原师范学院计算机系 单元...§1.3 逻辑函数中三种最基本的逻辑运算 §1.4 复合逻辑函数 §1.5 逻辑函数的几中表示方法及其转换 §1.6 逻辑代数 §1.7 逻辑代数的卡诺图化简法 §1.8 关于正逻辑和负逻辑的规定及其转换

    c语言(编写程序最佳参考资料)

    5.2.2 逻辑运算的值... 3 5.2.3 逻辑表达式... 3 5.3 if语句... 4 5.3.1 if语句的三种形式... 4 5.3.2 if语句的嵌套... 7 5.3.3 条件运算符和条件表达式... 9 5.4 switch语句... 10 5.5 程序举例... 11 6 ...

    ArcGIS开发教程

    1.3.20. 如何进行层与层之间的逻辑运算 65 1.3.21. 如何将shape文件转化成GeoDataBase(各种文件格式的转换) 67 1.3.22. 如何将Map中显示的图形转化成栅格文件 70 1.3.23. 如何打开选中的层或独立表的属性窗口 71 ...

    微软 C#语言参考 CHM格式

    1.8 结构 28 1.9 接口 29 1.10 代表... 30 1.11 联合... 31 1.12 名称空间和集合... 31 1.13 版本... 33 1.14 特征... 35 2. 语法结构... 37 2.1 翻译的阶段... 37 2.2 文法符号... 37 2.3 预处理... 38 2.3.1 ...

    Perl高级教程人称“大骆驼”(免费)

    1.5.5 逻辑操作符...........................................................................................................32 1.5.6 比较操作符.............................................................

    oracle从入门到精通

    3、数字和日期都可以使用数学运算符建立表达式。 ...............................................................9 4、定义空(NULL)值 ....................................................................

    Java学习笔记-个人整理的

    {1.8.2}逻辑运算}{29}{subsection.1.8.2} {1.8.3}条件运算符}{29}{subsection.1.8.3} {1.8.4}移位运算符}{30}{subsection.1.8.4} {1.9}流程控制}{31}{section.1.9} {1.9.1}\texttt {if\ldots esle\ldots }}{31}...

    仿真语音计算器v1.8

    该计算器可进行多种科学与逻辑运算,各种单位换算,增加了各种常用常数表,加入了角度与弧度计算,功能非常强大,是工程建筑、科学计算、理财等各方面应用的得力助手!对程序设计和游戏修改也有不错的作用!

    Safengine1.8

    虚拟处理器采用了逻辑门级的指令拆分,使用与非和加法两个基础运算指令实现了大部分复杂的x86指令,并且使用了随机的虚拟寄存器参与运算,极大程度提高了代码保护的安全性。 在同类的软件保护壳中,Safengine提供了...

    freexyn编程实例视频教程系列1:Matlab基础入门(PDF课件讲义)

    1.18 逻辑运算 1.19 关系运算 1.20 运算符的优先级 1.21 兼容性 数据类型 1.22 整数型 1.23 浮点型 1.24 Inf和NaN 1.25 显示格式 1.26 字符型 1.27 特殊字符 1.28 混合连接的类型 1.29 混合运算的类型 1.30 字符串型...

    引导C++入门的计算器源代码

    本产品是一款自动化计算器,可用于计算n次方、n次开方、三角函数、倒数、对数、阶乘、模运算、逻辑运算、位运算以及多次方程。可以自动识别命令、表达式(以等号为结束)。用‘\ \’表示绝对值符号;‘@’表示开方...

Global site tag (gtag.js) - Google Analytics