js02

數(shù)據(jù)類型

1   數(shù)據(jù)類型劃分
四種: 字符串     數(shù)字      布爾       未定義        空
String    Number   Boolean  undefined    null
復雜數(shù)據(jù)類型(引用類型)
Object、function、Array、Date、RegExp、Error.......
    字面量
固定的值,讓你從“字面上”理解其含義。
數(shù)值字面量
var age = 18;  // 數(shù)值字面量,18為字面值
    簡單數(shù)據(jù)類型介紹

Number

1.進制
  進制包括2進制、8進制(011)、10進制、16進制(0xA)、32進制等....
2.浮點數(shù)
因為精度丟失問題,所以不判斷計算后的兩個浮點數(shù)是否相等。
3.數(shù)值范圍
       由于內(nèi)存的限制,ECMAScript 并不能保存世界上所有的數(shù)值
最小值:Number.MIN_VALUE,這個值為: 5e-324
最大值:Number.MAX_VALUE,這個值為: 1.7976931348623157e+308
無窮大:Infinity
無窮?。?Infinity
4.NaN
            a) NaN 非數(shù)值(Not a Number的簡寫)
console.log(“abc”/18);  //結(jié)果是NaN
Undefined和任何數(shù)值計算為NaN;
NaN 與任何值都不相等,包括 NaN 本身
b) isNaN() :任何不能被轉(zhuǎn)換為數(shù)值的值都會導致這個函數(shù)返回 true 
(isNaN譯為是否符合一個標準,什么標準呢?不是一個數(shù)字的標   準,如果符合了那么就不是一個數(shù)字,不符合就是一個數(shù)字)
isNaN(NaN);// true
isNaN(“blue”); // true
isNaN(123); // false

String

1.字面量定義方式
用引號時,可單可雙,唯獨不可一單一雙??捎?length看有幾個字符。
var name = "zhangsan";
var name = 'zhangsan';
var name = 'zhangsan"; //錯誤,單引號和雙引號要成對出現(xiàn)
2.轉(zhuǎn)譯
總結(jié):無法輸出的字符,先輸出/,在輸出字符。(“、\、換行等....)
3.字符串不可變
    在內(nèi)存中不會立刻消失,只能二次賦值,原有的字符在一定時間    內(nèi)被  垃圾回收器回收。
4.字符串拼接
如果兩個變量都是字符串,無論是否包含數(shù)字,只要是拼接,那么在前一個后面添加后一個字符串。(+與-情況不同,詳情參考數(shù)據(jù)轉(zhuǎn)換)

Booblean

1.Boolean類型有兩個字面量:true和false,區(qū)分大小寫。(大寫不對)
雖然Boolean 類型的字面值只有兩個,但 ECMAScript 中所有類型的值都有與這兩個 Boolean 值等價的值
2.true
true、除0數(shù)字、“something”、Object(任何對象)為true
3.false
false、0 、“”、undefined 、null為false
4.if判斷時會把()內(nèi)的值強行轉(zhuǎn)換成boolean類型。

undefined和null

null和undefined有最大的相似性??纯磏ull == undefined的結(jié)果(true)也就更加能說明這點。但是null ===undefined的結(jié)果(false)。不過相似歸相似,還是有區(qū)別的,就是和數(shù)字運算時,10 + null結(jié)果為:10;10 + undefined結(jié)果為:NaN。
任何數(shù)據(jù)類型和undefined運算都是NaN;
任何值和null運算,null可看做0運算。

數(shù)據(jù)類型轉(zhuǎn)換

任何簡單類型轉(zhuǎn)換成String(三種方法)

1變量+“”   或者     變量+“abc”
2   String(變量)
3   變量.toSting()    注意:undefined和null不可以
Null和undefined無toString方法。

任何簡單類型轉(zhuǎn)換成Number

此轉(zhuǎn)換容易產(chǎn)生NaN,一旦被轉(zhuǎn)換的變量中含有非數(shù)字字符,都容易出現(xiàn)NaN
1.  變量-*/一個數(shù)字(有非數(shù)字字符會出現(xiàn)NaN)
例:var  num1  = “11”- 0;  var num2 =“11”* 1;var num =“11”/1;
JS底層做了一個強制類型轉(zhuǎn)換,把字符串轉(zhuǎn)換成了Number進行運算。
2.  Number(變量)(有非數(shù)字字符會出現(xiàn)NaN)
var num1 = Number(“18”);        把字符變成了數(shù)字。
var num2 = Number(“18.99”);   結(jié)果為18.99數(shù)字型。(有小數(shù)也轉(zhuǎn)換)
3.  parseInt()和parseFloat()(譯為取整和取浮點數(shù))
空字符串parseInt()和parseFloat()返回NaN,Number("")返回0
parseInt(變量):如果變量中收割字符為字母則結(jié)果為NaN。
否則取出現(xiàn)首個非數(shù)字前的整數(shù)。
123 = parseInt(“123.123aaaa”);

parseFloat(變量):如果變量中收割字符為字母則結(jié)果為NaN。
否則取出現(xiàn)首個非數(shù)字前的浮點數(shù)。(沒有小數(shù)取整)
123.123 = parseFloat(“123.123aaaa”);
4.  提別提示
Boolean類型中:true數(shù)值為1;false為0;
null的數(shù)值類型為0;
undefined無數(shù)值類型或者為NaN;

任何簡單類型轉(zhuǎn)換成Boolean

任何數(shù)據(jù)類型都可以轉(zhuǎn)換成boolean類型,所以和遺忘兩個轉(zhuǎn)換不同;
1.  Boolean(變量)     
var bool = Boolean(“1111”);         bool為true;
2.  ??!變量
第一個邏輯非操作會基于無論什么操作數(shù)返回一個與之相反的布爾值
第二個邏輯非操作則對該布爾值求反
于是就得到了這個值真正對應的布爾值

操作符

1 操作符種類

一、算數(shù)運算符(+—*/...)
a)  一元運算符:正號、負號、++、--、平方等一個變量就能運算
b)  二元運算符:+-*/%等兩個變量才能運算
c)  三元運算符:  值1?值2:值3;
二、邏輯運算符( ||&& ! )(或且非)
三、比較運算符(<、>、==、>=...)
四、賦值運算符(=、+=、-=、*=、/=、%=)

優(yōu)先級

1 () 
2 !、-(負數(shù))、++、-- (正數(shù)省略+)(一元運算)
3 *、/、% 
4 +、- (加,減)(二元運算)
5 <、<=、<、>= (一級邏輯運算)
6 ==、!=、===、!==、 (二級邏輯運算)
7 && (三級級邏輯運算)
8 || 
9?: (三元運算)
10 =、+=、-=、*=、/=、%= (賦值運算)
![image.png](http://upload-images.jianshu.io/upload_images/8848661-5e3bcf96067f7449.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

&&和||運算

1   &&鏈接兩個boolean類型,有一個是false結(jié)果就是false。
鏈接值不是布爾類型時,按照成布爾類型計算,結(jié)果本身不變。(非布爾)
例子: 1 = 2&&1;     0 = 0 && 1;   都是true取后面,都是false取前面。
2   ||鏈接兩個boolean類型,有一個是true結(jié)果就是true。
鏈接值不是布爾類型時,按照成布爾類型計算,結(jié)果本身不變。(非布爾)
例子: 2= 2||1;      1 = 0 || 1;   都是true取前面,都是false取后面。

var obj  =  document.body.scrollTop  ||  document.documentElement.scrollTop;

代碼部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
  <script type="text/javascript">
       // 數(shù)值型: number
       // var  a=10;
       //  var b= 20;
       //   console.log( a +b);
       //   
       //   字符串:string
            // var  a ="123"
            //  var b ="12"
            //   console.log(a+b);
            //   console.log(typeof a)
            //   
            //   布爾:boolean
               // var a= true;
               // var b=false;
               // console.log(typeof a)
               // console.log(typeof b)
               // 
               // undefined: 未定義
                 // var a 

                 // console.log (typeof a);
                 // 
                 //  null: 空
                     var a=null; 

                     console.log (typeof a)(object)
  
  </script>
    
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
           // 轉(zhuǎn)為字符串
         // var  a=1;
         //  var b=1+""
         //   var c=String(a)
         //    var d=a.toString();
         // console.log(typeof a);
         // console.log(typeof b);
         // console.log(typeof c);
         // console.log(typeof d);
            // 轉(zhuǎn)為Number型
              
              // var a="";
              //  var b= 1122-"";
              //  var c=1*"";
              //   var d= 1/"";
              //    var e=Number(a)
              //  console.log(typeof a);
              //   console.log(typeof b);
              //    console.log(typeof c);
              //    console.log(typeof d);
              //    console.log(typeof e);
                  
                   var num=11.11;
                   var n= parseInt(num);
                   var m= parseFloat(num);
                   console.log(typeof n);
                   console.log(typeof m); 
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
     <title>Document</title>
</head>
<body>
 <script type="text/javascript">
    
    var a=Number(prompt("aaaaa"));
     var b=Number(prompt("bbbbbb"));
      a>b ?alert("a>b是正確的"): alert("a>b是錯誤的");
  </script>
    
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<script type="text/javascript">
    var a=prompt("我是彈出輸入輸入框")
     console.log(a);
       console.log(parseInt(a%2));
       console.log(parseInt((a%100)/10));
       console.log(parseInt(a%10));
       console.log(parseInt(a%2) + parseInt((a%100)/10) + parseInt(a%10));
     
</script>
    
</body>
</html>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容