ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptの式と演算子について詳しく解説_JavaScriptのスキル
JavaScript スクリプト言語は、単項演算子、ブール演算子、算術演算子、関係演算子、三項演算子、ビットごとの演算子、代入演算子など、データ値を操作するための一連の演算子を記述します。
式は、JavaScript 言語の「フレーズ」であり、変数名 (またはリテラル) と演算子が含まれます。最も単純な式はリテラルまたは変数名です。もちろん、単純な式を組み合わせて複雑な式を作成する方法もあります。
1. 単項演算子
(1) 増加と減少 --
var box1=100; ++box1;//相当于box=box+1 document.write("box1="+box1+"<br/>");//输出box1=101 var box2=100; --box2;//相当于box=box2-1 document.write("box2="+box2);//输出box2=99
フロントとリアの違い
var box=100; var age=++box;//box先累加1为101,再赋值给age为101 var height=box++;//box先赋值给height为101,box再累加为102 document.write("age="+age+"<br/>");//输出age=101 document.write("height="+height+"<br/>");//输出height=101 document.write("box="+box);//输出box=102,原因是box经过了两次累加,所以是102
代入演算がない場合、前置と後置は同じになります。ただし、代入演算中に、インクリメント演算子またはデクリメント演算子が前にある場合は、先行する演算子が最初に累積または減分されてから割り当てられ、後置演算子の場合は、値が最初に割り当てられてから、累積または減分されます。
(2) 加算演算子と減算演算子
は正または負の演算に使用され、数値文字列を数値形式に変換する機能もあります。
var box = "20"; document.write(typeof box+"<br/>"); //输出string var age=-box; document.write(age+"<br/>");//输出-20 document.write(typeof age); //输出number
2. 算術演算子
JavaScript 言語では、 、-、*、/、および % (剰余) という 5 つの算術演算子が指定されています。算術演算子の値が数値ではない場合は、最初に Number() 変換関数を使用して数値に変換されます (暗黙的な変換)。
var box=100+"100"; document.write("box="+box+"<br/>");//输出100100 document.write(typeof box);//输出string
これはなぜですか? JavaScript 言語で算術演算を実行する場合、そのいずれかが文字列であれば、結果は文字列に変換されます。文字列連結演算子と同等であり、加算算術演算子としてカウントできなくなりました。
var box="100"-10; document.write("box="+box+"<br/>");//输出90 var age=5/4; document.write("age="+age+"<br/>");//输出1.25 var height=("你的年龄是:"+(10+10));//括号强制优先级 document.write(height);//输出你的年龄是:20
残りを取得
var box=10%3; document.write("box="+box);//输出1
3. 関係演算子
比較に使用される演算子は、a87bae9c66a2c4a548bb77b38a8692f8 (より大きい)、aa8e995f81b4ef9c24a843f6946d1225= (以上) と呼ばれます。 = (相対的)、!= (等しくない)、=== (同一または合同)、!== (合同または同一ではない)。ほとんどの関係演算子はブール値を返します。
他の演算子と同様、関係演算子が数値以外の値を操作する場合は、次のルールに従う必要があります:
1両方の演算子が数値である場合、数値比較
2 両方のオペランドが文字列の場合、2 つの文字列に対応する文字エンコード値を比較します
32つのオペランドの一方が数値の場合、もう一方を数値に変換して数値比較を行います
4 2 つのオペランドのいずれかがオブジェクトの場合は、最初に value() メソッドまたは toString() メソッドを呼び出してから、結果を比較します。
var box1=3>2; document.write(box1+"<br/>");//输出true var box2="3">22; document.write(box2+"<br/>");//输出false var box3="3">"22"; document.write(box3+"<br/>");//输出true var box4="a">"B";//a为97,B为66 document.write(box4+"<br/>");//输出true var box5= "Blue"<"alpha";//Blue的第一个字母是B,alpha的第一个字母是a,a为97,B为66 document.write(box5) //输出true
等価比較および非等価比較では、オペランドが数値以外の場合、次のルールが適用されます。
1オペランドがブール値の場合は数値に変換して比較し、falseの場合は0に、trueの場合は1に変換します。
2一方のオペランドが文字列の場合は比較前に数値に変換してから比較します。
3 オペランドがオブジェクトの場合は、最初に value() メソッドまたは toString() メソッドを呼び出してから比較します。
4 変換を行わなければ、null と unknown は等しい
5オペランドがNaNの場合、==はfalseを返し、!=はtrueを返し、NaNはそれ自体と等しくない
6両方のオペランドがオブジェクトである場合、それらが同じオブジェクトであるかどうかを比較し、両方が同じオブジェクトを指している場合は true を返し、それ以外の場合は false を返します。
7 合同・合同の判定では、例えば値や型が等しい場合は true が返され、そうでない場合は fasle が返されます。
四逻辑运算符
JavaScript语言中的逻辑运算符通常作用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符:&&(逻辑与),||(逻辑或)和!(逻辑非)。
(1)&&表示两边都必须是true,才返回true。
如果两边的操作数有一个操作数不是布尔值的情况下,与运算就不一定返回布尔值,此时遵循下面的规则:
1第一个操作数是对象,则返回第二个操作数
2第二操作数是对象,则第一个操作数返回true,才返回第二个操作数,否则返回false
3一个操作数是null,则返回null
4一个操作数是undefined,则返回undefined
5如果一个运算数是对象,另一个是 Boolean 值,返回该对象
逻辑与运算符属于短路操作,如果有第一个操作数返回的是false,第二个不管是true还是false都返回false。
var box1={}&&(5>4); document.write(box1+"<br/>");//输出true var box2=(5>4)&&{}; document.write(box2+"<br/>");//输出[object Object] var box3=(3>4)&&{}; document.write(box3);//输出false
(2)||表示两边有一个是true,就返回true。
如果两边的操作数有一个操作数不是布尔值的情况下,与运算就不一定返回布尔值,此时遵循下面的规则:
1第一个操作数是对象,则返回第一个个操作数
2第一个操作数的求值结果为fasle,则返回第二个操作数
3两个操作数都是对象,则返回第一个操作数
4两个操作数都是null,则返回null
5两个操作数都是undefined,则返回undefined
6两个操作数都是NaN,则返回NaN
逻辑或运算符也属于短路操作,如果有第一个操作数返回的是true,第二个不管是true还是false都返回true。
var box1={}||(5>4); document.write(box1+"<br/>");//输出[object Object] var box2=(5>4)||{}; document.write(box2+"<br/>");//输出true var box3=(3>4)||{}; document.write(box3);//输出[object Object]
(3)!逻辑非运算符可以作用与任何值,无论这个值是什么数据类型,这个运算符都会返回一个布尔值,它的流程是:先将这个值转换成布尔值,然后取反,规则如下:
1操作数是一个对象,返回false
2操作数是一个空字符串,返回true
3操作数是一个非空字符串,返回false
4操作数是数值0,返回true
5操作数是任意非0数值,返回false
6操作数是null,返回true
7操作数是NaN,返回true
8操作数是undefined,返回true
var box=!{}; document.write(box);//输出false
五、位运算符
JavaScript语言中包括了七种位运算符:~(位非),&(位与),|(位或),^(位异或),07a9f8d2db86bbcbe97add37a18921f4>(有符右移号),>>>(无符号右移)
(1)位非(~)运算把运算数转换成32位数字,然后把二进制数转换成它的二进制反码,最后把二进制数转换成浮点数。实质上是对数字求负,然后减去1即为所得值。
var box=~25; document.write(box);//输出-26
(2)位与(&)运算直接对数字的二进制形式进行运算,然后对上下同一位置的两个数位进行与运算,只有两个数位都为1时才得出1,其余的均为0.
var box=25&3; document.write(box);//输出1
(3)位或(|)运算也是直接对数字的二进制形式进行计算,然后对上下同一位置的两个数位进行或运算,只右两个数位都为0时才得出0,其余的均为1.
var box=25|3; document.write(box);//输出27
(4)位异或(^)也是直接对二进制形式进行运算。当只有一个数位存放的是1时,它才返回1。其余的返回0。也就是两个数位相同时返回0,不同时返回1.
var box=25^3; document.write(box);//输出26
(5)左移运算也是对二进制数进行操作,相等于第一个操作数乘以(2的左移位数次幂)的积。
var box=25<<3; document.write(box);//25左移3位相当于25乘以(2的3次幂),因此输出200
(6)有符号右移运算也是对二进制数进行操作,相等于第一个操作数除以(2的右移位数次幂)的商。
var box=24>>2; document.write(box);//输出6
(7)无符号右移运算也是对二进制数进行操作,对于正数,与有符号右移是相同的结果,但是对于负数,就会所不同。
六、赋值运算符
赋值运算符包括:=(),+=(),-=(),*=(),/=(),%=(),0663d4763dbaf5863b4f59f6fe914354>=(),>>>=()。
var box=100; box+=100;//相当于box=box+100 document.write("box="+box);//输出box=200
七、其他运算符
1)、字符串运算符:“+”,它的作用是将两个字符串想加。规则:只要有一个字符串即可。
var box=100+"10"'; document.write("box="+box);//输出100100
2)、逗号运算符,可以在一条语句中执行多个操作
var box=100,age=200,height=300; document.write("box="+box);//输出box=100
3)、三元操作符:
var box=(3>4)?"对":"错"; document.write(box);//输出错
如果想更详细的了解ECMAScript运算符的知识,可以访问JavaScript高级教程中的ECMASscript一元运算符这个系列中有详细的运算符教程。对于JS的运算符来说,我们可以对比着C++,C#和Java来学,这个还是相当的容易的。
以上就是关于JavaScript的表达式与运算符的全部内容,希望对大家的学习有所帮助。