JavaScript初識(三)

  • 運算符

1、JS基礎----算數運算符

取餘%

取餘的結果的正負值只和被除數的正負號有關,和除數的政府沒有關係

一般儘量避免給小數求餘,因爲js編譯器的精確度沒有其他編譯器那麼精密

自增>前自增    ++a   >  後自增    a++(自減同理)

變量a的前自增,變量本身先自增,然後再將結果賦予到當前位置;

變量a的後自增,變量的值先賦予當前位置,然後變量自身在進行自增

//例:
var a = 4, b = 3;
var c = (a++ + ++b + b-- + --a)%5;
console.log(a);//a = 4
console.log(b);//b = 3
console.log(c);//c = 1
加號的另一種用法,如果加號的兩側,有一個是字符串,則結果是字符串的拼接

var a = 1;
console.log("a的結果是"+a);
//a的結果是1
Math.round()四捨五入

var a = 9,b = 7;
var c = Math.round(a/b);
console.log(c)
//1
parseInt:將字符串轉換成整數,對從字符串左側一次查找數值,直到碰到非數值的字符結束

var a = '128';
var b = parseInt(a);
console.log(typeof b);
//number
parseFloat:會轉遇到的第一個的小數點,如果第一個小數點在第一個位置,默認加一個0

浮點數:即就是帶有小數點的數

例:

var a = ".125.24";
var b = parseFloat(a);
console.log(b);
//0.125

當結果返回NaN:not a number代表不能將這個轉換成正常的數字類型,這個返回值是number類型

總結:parseInt和parseFloat的區別

1)、parseInt和parseFloat會按照順序一個個轉字符串中的字符,直到碰到不能轉爲數字的字符爲止,如果第一個字符就轉不成數字,則輸出NaN;

2)、parseInt認爲小數點不能轉,parseFloat會轉遇到的第一個小數點;

3)、Number對整個字符串進行轉換,根據有沒有包含一個小數點來選擇轉換爲整形還是浮點型,有任意字符不能轉換時返回NaN

.toString(x);轉換爲x進制

.toFixed(x);保留到小數點後幾位

  • 賦值運算:+=、-=、*=、/=、%=
a+=b      即就是 a = a+b;

a-=b       即就是a =  a-b;

其他的賦值運算符同理

  • 關係運算符:返回值是布爾值>、<、>=、<=、!=

var a = 7,b = 6;
var c = a>b;
console.log(c);
//true
  • ==和===

區別:

===:

1、如果類型不同,就不相等;

2、如果兩個都是數值,並且是同一個值,那麼相等;

3、如果兩個都是字符串,每個位置的字符都一樣,那麼相等,否則不相等;

4、如果兩個數都是true或者都是false,那麼相等,否則不相等;

5、如果兩個數都引用同一個對象或者函數,那麼相等,否則不相等;

6、如果兩個值都是null或者都是undefined,那麼相等


 ==:

1、如果兩個值類型相等,那麼進行===比較

2、如果兩個值類型不同,他們可能相等,根據下面規則進行類型轉換再比較

         a、如果一個是null,一個是undefined,那麼相等;

null == undefined

     null == false

            undefined == false

b、如果一個是字符串,一個是數值,把字符串轉化成數值再比較;

c、如果任一值是true,把它轉化成1再比較,如果任一值是false,把它轉化成0再比較;

        d、任何其他組合都不想等

var a = 5,b = '5';
console.log(a==b);//true
console.log(a===b);//false
引用數據類型的判斷,看兩側的變量是否爲同一個對象,是則是true,不是則爲false

var a = {},b = {};
console.log(a==b);//false
console.log(a===b);//false
var a = {},b = a;
console.log(a == b);//true
console.log(a === b);//true


邏輯運算符:&&、||、 !(與、或、非)false代表的數值就是0,其他的都是true

&&:只有全部的表達式都爲真才返回true,否則返回false;

||:至少有一個是真則返回值是true,全部爲假返回false;

!:表達式爲真則返回false,表達式爲假則返回true

var a = !6<7;//!6的優先級最高先執行這個結果爲false,隱式轉換爲數值則是0,返回a就是true
alert(a);
//true
三目運算符:表達式1>表達式2?結果1:結果2


運算符的優先級

. [] ():字段訪問、數組下標、函數調用以及表達式分組

++、--、!、delete、new、typeof

*、/、%

+、-、+ 加、減、字符串連接

關係運算符、instanceof(判斷某個對象是否是某個類的一個實例)

邏輯運算符

賦值運算符

()作用:可以表達式分組、改變運算符的優先級、函數調用。

new運算符:用來創建對象。

  • 強制轉換

Number()強制返回數值類型

傳進去的是布爾值,true返回爲1,false返回爲0;

傳進去的是null返回0;

傳進去是undefined返回NaN;

檢測一個數字返回的是不是NaN不能用NaN == NaN來判斷

只能用一個函數isNaN()來判斷

將對象轉換爲數值的時候

當傳進去的是一個對象(object)的時候,返回值是NaN,這個過程比較複雜,需要先調用valueOf:function(){},如果valueOf返回是一個基本數據類型時,Number會對其進行轉整操作;如果返回值還是一個函數的時候,調用toString:function(){},如果這個函數還不能返回基本數據類型的時候,會報錯!!!(兩個方法的返回值相同)

var obj = {
    valueOf:function(){
        return{};
    }
    toString:function(){
        return{};
    }
};
document.write(Number(obj));
string函數:將數據類型轉換爲字符串類型

alert(String(123));//'123'
alert(String(true));//'true'
alert(String(null));//'null'
alert(String(undefined));//'undefined'

var obj = {
    valueOf:function(){
        return{};
    }
    toString:function(){
        return{};
    }
};
document.write(Number(obj));
將對象轉換爲字符串類型當傳進去的是一個對象(object)的時候,返回值是NaN,這個過程比較複雜,需要先調用toString:function(){},如果toString:function(){},返回是一個基本數據類型時,Number會對其進行轉整操作;如果返回值還是一個函數的時候,調用valueOf:function(){},如果這個函數還不能返回基本數據類型的時候,會報錯!!!
解決方案就是將返回值直接改爲基本的數據類型
var obj = {
    toString:function(){
        return{};
    }
    valueOf:function(){
        return{};
    }
};
document.write(Number(obj));

參數爲原始類型值轉化爲布爾類型

轉換規則相對簡單:除了以下六個值的轉換結果爲false,其他的值全部爲true。

undefined、null、-0、0或+0、NaN、''(空字符串)

所有對象的轉換結果都爲true

  • 自動轉換(隱式轉換)
計算機在預編譯的過程中自動進行轉換

1、數字+字符串

var num = 1;
console.log(typeof("這個數字是"+1));//string//把數字1先轉換爲字符串,然後,再進行拼接。
結果是字符串類型

2、數字-字符串

var num = 75;
num = num-"2";//數字和字符串做減法,那麼,字符串會轉換成數字,
alert(num);//number
  • 進制的轉換:二進制、八進制、十進制、十六進制

二進制:只有0和1

八進制:0打頭,0-7

十進制:0-9的數字

十六進制(在編程語言中,十六進制以0x打頭):逢十六進一;0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;

parseInt(a,n)//第二個值表示指定第一個值是幾進制的,最後結果都是10進制的

在js中輸入一個八進制的數字時,會自動轉換爲十進制
如:alert(012);
 把十進制轉換爲八進制;

  var age = 25;
  //alert(age.toString(8));
  var str = age.toString(8);//把數字age轉換爲8進制數的字符串形式;
  alert(typeof str);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章