关闭

javascript高级程序设计笔记--js操作符

标签: javascriptjs笔记
329人阅读 评论(0) 收藏 举报
分类:
在对非数值应用一元加操作符时,该操作符会像Number()转型函数一样对这个值执行转换。换句话说,布尔值false和true将被转换为0和1,字符串值会被按照一组特殊的规则进行解析,而对象先是调用它们的valueOf()方法(或)toString()方法,再转换得到的值。例如:
var s1 = "01";                       s1 = +s1;  //值变成数值1
var s2 = "1.1";                      s2 = +s2;  //值变成数值1.1
var s3 = "z";                         s3 = +s3;  //值变成NaN
var b = false;                        b = +b;     //值变成数值0
var f = 1.1;                           f = +b;      //值未变,仍是1.1
var o = {                               o = + o;    //值变成数值-1
valueOf : function(){
return -1;
}
}


注意 减号同样适用 例如 s1 = -s1;  值变成-1

逻辑非
如果操作数是对象,返回false
如果操作数是空字符串,返回false
如果操作数是一个非空字符串,返回false
如果操作数是数值0,返回false
如果操作数是任意非0数值(包括Infinity),返回false
如果操作数是null,返回true
如果操作数是NaN,返回true
如果操作数是undefined,返回true
!false    //true
!"blue"  //false
!0         //true
!NaN     //true
!""         //true
!12345  //false



逻辑与
逻辑与操作可以应用于任何类型的操作数,而不仅仅是布尔值。再有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值;此时它遵循下列规则:
如果第一个操作数是对象,则返回第二个操作数。
如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象。
如果两个操作数都是对象,则返回第二个操作数。
如果有一个操作数是null,则返回null。
如果有一个操作数是NaN,则返回NaN。
如果有一个操作数是undefined,则返回undefined。

逻辑或
如果第一个操作数是对象,则返回第一个操作数。
如果第一个操作数的求值结果为false,则返回第二个操作数。
如果两个操作数都是对象,则返回第一个操作数。
如果两个操作数是null,则返回null。
如果两个操作数是NaN,则返回NaN。
如果两个操作数是undefined,则返回undefined。

可以利用逻辑或的这一行为来避免为变量赋null或undefined值,例如:
var myObject = preferredObject || backupObject;
在这个例子中,变量myObject奖杯赋予等号后面两个值中的一个。变量preferredObject中包含优先赋给变量myObject的值,变量backupObject负责在preferredObject中不包含有效值的情况下提供后备值。如果preferredObject的值不是null,那么它的值将赋给myObject;如果是null,则将backupObject的值赋给myObject。

关系操作符
例如  var result = 5>2; //true
var result = "23" > "3";  //false  因为ASCII码中2为50,3为51

全等和不全等
===表示两个操作数未经转换就相等的情况下返回true,例如
var result1 = ("55" == 55);    //true
var result2 = ("55" === 55);  //false



with语句
with语句的作用是将代码的作用域设置到一个特定的对象中。例如
var qs = location.search.substring(1);
var hostname = location.hostname;
var url = location.href;


上面的代码都包含location对象。如果使用with语句,可以改写为:
with(location){
var qs = search.substring(1);
var hostname = hostname;
var url = href;
}



ECMAScript中的所有参数传递都是值传递,不可能通过引用传递参数。
可以向ECMAScript函数传递任意数量的参数,并且可以通过arguments对象来访问这些参数。
由于不存在函数签名的特性,ECMAScript函数不存在重载。
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

《JavaScript高级程序设计 第三版》学习笔记 (十一)事件详解

一、事件流 1.事件冒泡:事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。最早使用事件冒泡的是IE,现在绝大多数浏览器都使用冒泡。IE9、F...
  • lbxx1984
  • lbxx1984
  • 2014-09-01 21:55
  • 1383

JavaScript高级程序设计(读书笔记)(一)

JavaScript高级程序设计(JS部分知识汇总)本笔记汇总了作者认为“JavaScript高级程序设计”这本书的前七章知识重点,仅供参考。第一章 JavaScript简介JavaScript发...
  • hc1025808587
  • hc1025808587
  • 2016-05-23 22:43
  • 8955

JavaScript高级程序设计(读书笔记)(七)

本笔记汇总了作者认为“JavaScript高级程序设计”这本书的前七章知识重点,仅供参考。 第七章 函数表达式 小结: 在JavaScript编程中,函数表达式是一种非常有用的技术...
  • hc1025808587
  • hc1025808587
  • 2016-06-13 16:06
  • 6628

JavaScript高级程序设计之基本概念之相等操作符第3.5.8讲笔记

3.5.8 条件操作符 条件操作符应该算是ECMAScript 中最灵活的一种操作符了,而且它遵循与Java 中的条件操作符相 同的语法形式,如下面的例子所示: variable = boole...
  • Jane617_min
  • Jane617_min
  • 2015-09-26 13:30
  • 310

《JavaScript高级程序设计》读书笔记--2-操作符

操作符一元操作符递增递减操作 后置var num1 = 2; var num2 = 20; var num3 = num1-- + num2;//等于22 var num4 = num1 + num...
  • u010309756
  • u010309756
  • 2016-12-12 11:27
  • 147

JavaScript高级程序设计之基本概念之相等操作符第3.5.7讲笔记

确定两个变量是否相等是编程中的一个非常重要的操作。在比较字符串、数值和布尔值的相等性时, 问题还比较简单。但在涉及到对象的比较时,问题就变得复杂了。最早的ECMAScript 中的相等和不等 操作...
  • Jane617_min
  • Jane617_min
  • 2015-09-26 13:27
  • 285

JavaScript高级程序设计之基本概念之关系操作符第3.5.6讲笔记

小于()、小于等于(=)这几个关系操作符用于对两个值进行比 较,比较的规则与我们在数学课上所学的一样。这几个操作符都返回一个布尔值,如下面的例子所示: var result1 = 5 > 3; /...
  • Jane617_min
  • Jane617_min
  • 2015-09-26 13:22
  • 465

JavaScript高级程序设计之基本概念之操作符之乘性操作符第3.5.4讲笔记

ECMAScript 定义了3 个乘性操作符:乘法、除法和求模。这些操作符与Java、C 或者Perl 中的相 应操作符用途类似,只不过在操作数为非数值的情况下会执行自动的类型转换。如果参与乘性计算...
  • Jane617_min
  • Jane617_min
  • 2015-09-26 13:13
  • 382

JavaScript高级程序设计之基本概念之操作符之布尔操作符第3.5.3讲笔记

在一门编程语言中,布尔操作符的重要性堪比相等操作符。如果没有测试两个值关系的能力,那么 诸如if...else 和循环之类的语句就不会有用武之地了。布尔操作符一共有3 个:非(NOT)、与(AND)...
  • Jane617_min
  • Jane617_min
  • 2015-09-26 13:05
  • 246

JavaScript高级程序设计之基本概念之操作符之加性操作符第3.5.5讲笔记

加法和减法这两个加性操作符应该说是编程语言中最简单的算术操作符了。但是在ECMAScript 中, 这两个操作符却都有一系列的特殊行为。与乘性操作符类似,加性操作符也会在后台转换不同的数据类 型。...
  • Jane617_min
  • Jane617_min
  • 2015-09-26 13:17
  • 301
    个人资料
    • 访问:13204次
    • 积分:419
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:9篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论