JavaScript(四):運算子&資料類型轉換

來源:互聯網
上載者:User

標籤:連結   理解   blank   沒有   圖片   ++   否則   提交表單   複合   

+:算符的加法;連接字串

加法會將其它類型的值,自動轉為字串,然後再進行串連運算!

 1 var a=1+2; 2 console.log(‘first: ‘+a); 3 var a=1+2+‘3‘;//先計算1+2,然後與‘3‘字串串連 4 console.log(‘second: ‘+a); 5 var x=10; 6 var a=x+‘‘;//將一個值轉化為字串 7 console.log(‘third: ‘+a); 8 //注意下面這種情況 9 var now=new Date();10 console.log(typeof (now+2));//string11 console.log(typeof (now-1));//number

 

JavaScript中有9個運算子:

+(加法:Addition),-(加法:Subtraction),*(乘法:Multiplication),/(除法:Division),%(取餘:Remainder),++(自增:Increment),--(自減:Decrement),+(數值運算子:Convert to Number;+x),-(負數值運算子:Negate;-x)

 1 console.log(1+2);//3 2 console.log(1-2);//-1 3 console.log(1*2);//2 4 console.log(3/2);//1.5 5 console.log(‘取餘運算的結果的符號由第一個運運算元的符號決定‘); 6 console.log(3%2);//1 7 console.log(-3%2);//-1 8 //數值運算子(+)只需要一個運算元,而加法需要兩個運算元 9 //數值運算子(+)與Number()效果相同10 console.log(‘數值運算子‘);11 console.log(+‘1‘);//112 console.log(+false);//013 console.log(+[]);//0

 

賦值運算子&複合運算子:注意符號是連在一起的(例如 +=不能寫為 + =,即中間沒有空格;否則報錯!)

 1 var x=1,y=2; 2 x=y;//賦值運算子,將y值賦值給x 3 x+=y;//即x=x+y; 4 x-=y;//x=x-y; 5 x*=y;//x=x*y; 6 x/=y;//x=x/y; 7 x%=y;//x=x%y; 8 x>>=y;//x=x>>y; 9 x<<=y;//x=x<<y;10 x >>>=y;//x=x>>>y;11 x &= y;//x=x&y;12 x |=y;//x=x|y;13 x ^=y;//x=x^y;

 

8個比較子:==(相等,equal),===(嚴格相等,strict equal),!=(不相等),!==(不嚴格相等),<(小於),<=(小於等於),>(大於),>=(大於等於),=(等於)

比較後結果,返回布爾值!

1 console.log(2>1);//true2 console.log(‘cat‘>‘Cat‘);//true,ASCII碼c比C大3 console.log(‘catdog‘>‘cat‘);//true4 console.log(‘abc‘>‘bcde‘);//false

對象作比較時:

1 //對象作比較時,一般先call valueOf()方法;如果返回的還是對象,call toString()方法2 console.log(‘---‘);3 var result=[2] > ‘11‘;//相當於[2].valueOf().toString()>‘11‘4 console.log(result);5 var result1=[2]>[1];//相當於[2].valueOf().toString()>[1].valueOf().toString()6 var result2={x:1}>={y:2};//{x:1}.valueOf().toString()>={y:2}.b=valueOf().toString();即‘[object object]‘>=‘[object object]‘7 console.log(result1,result2);

==運算子的不足:故盡量少用(甚至不用)==運算子,使用===運算子進行相關操作!

1 console.log(false == ‘false‘);//false2 console.log(null == undefined);//true3 console.log(false == ‘‘);//true4 console.log(false == null);//false

 

位元運算符:直接對二進位位進行運算,共有7個:

或運算(or):|;兩個二進位位均為0,則結果為0;否則為1

與運算(and):&;兩個二進位位均為1,結果為1;否則為0

否運算(not):~;對二進位位取反

異或運算(xor):^;兩個二進位位不同,則為1;否則為0

左移運算(left shift):<<;<<n:相當於乘上2的n次方

右移運算(right shift):>>;>>n:相當於除以2的n次方

帶符號位的右移運算(zero filled right shift):>>>

位元運算直接處理每一個位元位,是非常底層的運算,操作速度非常快;缺點是不直觀,很多場合下不能使用,否則代碼難以理解與排錯!

位元運算只對整數起作用:在javascript內部,數值是以64位浮點數進行儲存,但在位元運算時,是以32位帶符號的整數進行運算,傳回值也是32位帶符號的整數!

轉化為相應整數可以:(|0 ;捨去小數部分,只留下整數部分)

否運算樣本:

1 console.log(‘---‘);2 console.log(~ 3);//-4 可以簡單記憶為一個值與自身的取反值相加得到-13 console.log(~~ 3);//兩次否運算得到本身4 console.log(~~ 3.1);//取整效果,速度最快

異或運算樣本:

1 console.log(1^2);2 //不引入臨時變數,交換兩個資料的值3 var a=99,b=100;4 a^=b;5 b^=a;6 a^=b;7 console.log(a,b);//100,998 console.log(10.5^0);//取整效果

 

void運算子:執行一個運算式,不返回任何值;也可以說返回undefined

 

void運算子的一個主要作用是:在超連結中插入代碼,返回undefined,防止頁面跳轉。

 1 <body> 2     <!-- 此時會發生跳轉 --> 3     <a href="www.test.com" onclick="f();">test</a> 4     <!-- 此時不發生跳轉 --> 5     <a href="www.test.com" onclick="f();return false;">test1</a> 6     <!--此時也不發生跳轉 --> 7     <a href="javascript:void(f())">test2</a> 8     <script> 9         function f(){10             return false;11         }12     </script>13     <!-- 下面可以使提交表單時頁面不發生跳轉 -->14     <a href="javascript:void(document.form.submit())">test3</a>15 </body>

 

()可以提高運算優先順序,為了結構清晰,建議複雜的式子總是添加()!

注意:()中只能放置運算式;不能放置語句!

 

資料類型轉換:強制資料類型轉換;自動資料類型轉換

強制轉換:Number(),String(),Boolean()三個建構函式!

Number():

 

注意Number()對對象的強制轉換:先valueOf,然後toString

 

String():

 

注意String()對對象的強制轉化:先toString,然後valueOf

 

Boolean():undefined,null,0,NaN,‘‘或""轉化為false;其餘均為true!

而其它諸如[],{}等均為true。

 

自動轉換:建議需要的地方總是添加Number(),String(),Boolean(),利於檢查和排錯!

 參考:阮一峰JavaScript標準參考教程

JavaScript(四):運算子&資料類型轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.