Javascript高级程序设计——4.运算符

运算符

1、一元运算符
2、算术运算符(+、-、*、/)
3、关系运算符
4、相等运算符、全等运算符
5、逻辑运算符
6、位运算符(省略,不详细介绍)
7、赋值运算符
8、其他运算符
9、运算符优先级

  在ECMAScript与众不同之处在于

运算符可以适用于很多值,例如字符串、数字值、布尔值,甚至对象。
不过,在运用对象时,会调用对象的两种方法,以便获得可操作的值,如下:
(1)valueof()
(2)toString()

1、一元运算符

只能操作一个值的运算符

(1)递增++和递减运算符--

var box=100;

a、前置递增递减——

++box;       //把box累加1,类似于box=box+1;(box=101)
--box;       //把box累减1,类似于box=box-1;(box=99)

b、后置递增递减——

box++;      //同上
--box;      //同上

(2)前置和后置的区别

a、前置运算符(以++为例)“先运算,再赋值”

 示例1:
var box=100;
	var age=++box;      //现将box加1(box=101),再赋值给age(age=box=101)
	alert(age);	    //101

b、后置运算符(以++为例)“先赋值,再运算”

 示例2:
var box=100;
	var age=box++;    //现将box值赋值给age(age=100),box自身再加1(box=101)
	alert(age);       //100

(3)其他类型的字符串

示例3:
//1.数值字符串;
var box="89";
box++;        //box=90,先将数值字符串转换为数值;

//2、布尔类型时;
var box=false;
box++;     //false值为0,加1为1;

//3、字符串
var box=‘ab’;
box++;     //由于字符串包含非数值,转为NaN;

//4、toString()或valueof时
var box={
toString:function(){return 1;}
};
box++;
//此时box=1;若是var box={非数值字符串},返回NaN


(4)加和减运算符


示例4:
var box=100;
+box;     //+box为正数,-box为负数

示例5
var box=100;
+box;
alert(typeof box);    //返回string类型;

var box=100;
alert(typeof +box); //返回number类型;

2、算数运算符

(1)加法、减法——以加法为例
示例1:
var box=1+1;    //2
	var box=1+NaN;   //NaN;
	var box=100+'100';     //此时“+”为字符串连接运算符,只要其中一个为字符串,就不是加法运算符;
	var box='你的年龄是:'+10+20;   //数值在后边,就不是加法,即为字符串连接;
	var box=10+20+'你的年龄是:'     //alert(30'你的年龄是:');


解决办法是——将数值加减作为整体,“优先级”的概念
var box='你的年龄是:'+(10+20)  //'你的年龄是:30'
示例2:
var box=10+{};    
	alert(typeof box);   //字符串类型string;

若想返回数值,即必须为toString()valueof类型
var box={
		valueOf:function(){return -1}
	};
	alert(typeof box);    //number;

(2)乘法、除法

(具体的同上)

(3)求模、取余

var box=10%3;   //1
var box=10%true;    //1;
var box=10%NaN;   //NaN;
var box=10%{};     //NaN;
注意:仅在valueof或toString时才可以运算;


3、关系运算符

大多返回的是一个布尔值

(1)两个操作数都为数值,数值比较

(2)两个都是字符串,则比较两个字符串的编码,即ASCII码值

(3)两个操作数一个为数值,先将一个转换为数值,再比较

(4)两个操作数一个为对象,先调用valueOf或toString方法,再用结果比较


var box=3>2;   //true;
var box='3'>22;   //false;
va  box='3'>'22';    //true;
var box='a'>'b';    //false,a—97,b—98;
var box='a'>'B';   //true,B—66;
var box=1>对象;   //false
上述案例中,若将数值与对象相比,

	var box=1>{
	toString:function(){return 0;}
     }
	alert(box);    //true;

4-1、相等运算符

(1)两个操作数均为对象,判断是否指向同一个对象,若是则为true,否则false;

(2)全等和全不等的判断,若值和类型都相等,才返回true

(3)若一个操作数为NaN,则==返回false,!=返回true,并且与自身不相等

(4)若与true、false比较,则true=1,false=0;

(5)若与{...}比较,为false,除非是tostring或valueof

var box={}=={};
//false,比较的应该是他们的地址;

4-2、全等运算符

与相等运算符不同点是:不仅数值相等,数值类型也必须相等。

(1)null==undefined     true;

(2)'NaN'==NaN;               false;

(3)‘100’==100;           true;

(4)'100'===100     false  

(5)var box='' ==0;    true,空字符串比较,会转换为0

(6)var box=null==0;     false,虽说null会转为0,但在进行比较时,null和undefined无自动转化功能


5、逻辑运算符

一般和关系运算符结合起来使用

(1)逻辑与&&

a、等式两边必须同为true,才能返回true

b、若第二个为对象时,第一个为true,则返回第二个对象,否则返回false
var box=(5>4)&&{};      //object[];
c、若一个为null,返回null,
d、若一个为undefined,则返回undefined
(2)逻辑或||
a、只要等式一边为true,整体就返回true,等式两边都为false,返回false
b、第一个操作数为对象,返回第一个操作数
c、等式两边均为对象,返回第一个对象;
d、等式两边为null或undefined,返回null、undefined
(3)逻辑非!
一般情况下,返回的是布尔值true或false
a、一次取反——操作:先转型,再取反
var box=!(5>4);     false;
b、两次取反——操作:再取反,再一次取反(得到原型的布尔值)
var  box=!!(5>4);   true;

6、位运算符

(由于基本用不到,所以不做详细的介绍,省略)

7、赋值运算符

(1)简单的,用“=”表示,将右侧值赋值给左侧的变量
var box=100;
(2)复杂的复合运算
+=、-=、/=、*=、%=

8、其他运算符

(1)逗号运算符
逗号运算可以在一条语句中执行多个操作
var box=100,age=20,height=167;  //变量
var box=(1,2);          //数组
var box={1:2,2:3,3:4};    //对象
(2)字符串运算符
用于将字符串连接起来(如“+”)
(3)三元运算符(条件运算符)
var box=5>4  ? true:false;

9、运算符优先级

一般运算不考虑运算符优先级,若要考虑,可对变量用括号连接,提高优先级级别
var box=5+2*2;    //9
var box=(5+2)*2;   //14
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值