操作符-一元操作符

只能操作一个值的操作符叫一元操作符。

1.递增和递减操作符;

递增和递减都有两个版本:前置型和后置型。

前置型:

在执行前置的递增和递减操作时,变量的值都是在语句被求值前改变的。(在计算机科学领域,这种情况通常被称做副效应)。

var age=29;
var anotherAge=--age+2;
alert(age);//28
alert(anotherAge);//30

前置递增和递减操作与执行的语句的优先级相等,因此整个语句会从左至右被求值。

var num1=2;
var num2=20;
var num3=--num1+num2;//21
var num4=num1+num2;//21

后置型:

与前置型的区别是操作符放在变量的后面,然后就是递增和递减操作是在包含他们的语句被求值之后才执行的。

var num1=2;
var num2=20;
var num3=num1--+num2;//22
var num4=num1+num2;//21

递增和递减不仅适用于整数,还可以用于字符串、布尔值、浮点数值和对象。在应用于不同的值时,递减和递减操作符遵循下列规则:

  •在应用于一个包含有效数字字符的字符串时,先将期转换为数字值,再执行减1的操作,字符串变量变成数值变量。

  •在应用于一个不包含有效数字字符的字符串时,将变量的值设置为NaN。字符串变量变成数值变量。

  •在应用于布尔值false时,先将其转换为0再执行减1的操作。布尔值变量变成数值变量。

  •在应用于布尔值true时,先将其转换为1在执行减1的操作,布尔值变量变成数值变量。

  •在应用于浮点数值时,执行加减1的操作。

  •在应用于对象时,先调用对象的valueOf()方法以取得一个可供操作的值。然后对该值应用前述规则。如果结果是NaN,则在调用toString()方法后再应用前述规则。对象变量变成数值变量。

  例如:

var a1="2;
var a2="z";
var b=false;
var f=1.1;
var o={valueOf:function(){return -1;}};

a1++;//3
a2++;//NaN
b++;//1
f--;//0.100000000000000009
o--;//-2;

2.一元加和减操作符

一元加(+)操作符放在数值前面,对数值不会产生任何影响,如:

var num=25;
num=+num;//25

但在非数值应用一元加操作符时,该操作符会像Number()转型函数一样对这个值执行转换。布尔值false和ture将被转换为0和1,字符串值会被按照一组特殊的规则进行解析,而对象是先调用它们的valueOf()和(或)toString()方法,再转换得到的值。
例如:

var a1="01";
var a2="1.1";
var a3="z";
var b=false;
var f=1.1;
var o={valueOf:function(){return -1;}};
a1=+a1;//1
a2=+a2;//1.1
a3=+a3;//NaN
b=+b;//0
f=+f;//1.1
o=+o;//-1

一元减(-)操作符用于数值时表示负数。

var num=24;
num=-num;//-24

而当用于非数值时,一元减操作符遵循与一元加操作符相同的规则。最后再将得到的数值转换为负数,例如:

var a1="01";
var a2="1.1";
var a3="z";
var b=false;
var f=1.1;
var o={valueOf:function(){return -1;}};

a1=-a1;//-1
a2=-a2;//-1.1
a3=-a3;//NaN
b=-b;//0
f=-f;//-1.1
o=-o;//1
时间: 2024-10-07 18:24:59

操作符-一元操作符的相关文章

Java一元操作符++详解

废话不多说,直接上代码. package com.coshaho.learn; /** * * OperatorLearn.java Create on 2016-11-13 下午8:38:15 * * 类功能说明: 深入理解++操作符 * * Copyright: Copyright(c) 2013 * Company: COSHAHO * @Version 1.0 * @Author coshaho */ public class OperatorLearn { // 一元操作符,赋值操作符

一元操作符

什么是一元操作符? 只能操作一个值的操作符就叫做一元操作符. 注意:无论是自增(递增)还是自减(递减),都是在原有值的基础上进行加一或减一的操作,并且这些操作对所有类型的值(number.string.boolean...)都有效. 写法: /** 自增(递增):分为前置自增和后置自增 */ var a = 1; ++a; // 前置++ a++; // 后置++ /** 自减(递减):同样也分为前置自减和后置自减 */ var a = 1; ++a; // 前置++ a++; // 后置++

javascript中的一元操作符

题目如下: var s1 = "01"; var s2 = "1.1"; var s3 = "z"; var b = false; var f = 1.1; var = { valueOf: function() { return -1; } }; s1= -s1; //-1 s2 = -s2; //-1.1 s3 = -s3; //NaN b = -b; //0 f = -f; //-1.1 o = -o; //1 解释: 在对非数值应用一元加

JS基本概念 -- 操作符 -- 布尔操作符

布尔操作符一共有三个: 非(Not).与(AND).或(OR) 逻辑非逻辑非操作符由一个叹号(!)表示,可以应用于ECMAScript中的任何值.无论这个值是什么类型,这个操作符都会返回一个布尔值.逻辑非操作符首先将他的操作数转换为一个布尔值,再对其求反. //1.如果操作数是一个对象,返回false var o = { name: "ss" }; alert(!o); //false var o1 = {}; alert(!o1); //false //2.如果操作数是一个空字符串,

条件操作符(三元操作符)

C++中有一个需要注意的操作符,这个操作符石C++中唯一的三元操作符,这个操作符就是条件操作符. 用法: cond ? value1 : value2; 简介: 这个表达式的求解顺序是计算cond的值是否等于0,如果等于0(也就是false),那么返回value2(如果value2是一个表达式,那么计算表达式的值并返回计算结果),否则返回value1(如果value2是一个表达式,那么计算表达式的值并返回计算结果). 使用三元操作符的时候需要注意以下几点: (1)避免三元操作符的深度嵌套.如下,

操作符-位操作符

1.按位非(NOT) 按位非操作符由一个波浪线(~)表示,执行安慰非的结果就是返回数值的反码.按位非操作的本质:操作数的负值-1. var num=25; var num2=~num1; alert(num2);//-26 2.按位与(AND)按位与操作符由一个和号字符(&)表示,它有两个操作符数. 第一个数值的位 第二个数值的位 结果 1 1 1 1 0 0 0 1 0 0 0 0 简而言之,按位与操作只在两个数值的对应位置都是1时才返回1,任何一位是0,结果都是0:例如: var resul

【js实例】js中的5种基本数据类型和9种操作符

js中的5中基本数据类型 js标识符 第一个字符必须为字母,下划线,或美元符 其他字符可以是字母,下划线,美元符,数字 js标识符区分大小写 标识符不能使关键字和保留字 关键字: break do instanceof typeof case else new var catch finally return void continue for switch while debugger function this with default if throw   delete in try  

拷贝构造,操作符重载

 拷贝构造 #include <iostream> #include <string.h> using namespace std; class mystring { public: char *s; public: mystring() { s = new char[1024]; cout << "mystring" << endl; } //拷贝构造 mystring(const mystring &it) { s= ne

JavaScript基本概念(操作符)

一元操作符 一元操作符在处理所有的非数值时,相当于将该值经过Number()转换成数值. 位操作符 负数在计算机上以二进制补码的形式储存,补码等于原码的反码加1,ECMAScript在以二进制字符串形式输出一个负数时,我们看到的只是这个负数绝对值的二进制码前面加上一个符号(而不是输出32位二进制)如: var num = -18; alert(num.toString(2)); // "-10010" 对特殊的NaN和Infinity值应用位操作符时,这两个值都会被当成0来处理. 进行