JavaScript(5)—— 變量及數據類型

  JavaScript和Java在概念和設計方面都是徹底不一樣的語言。JavaScript由Brendan Eich於1995年發明,並於1997年成爲ECMA標準。ECMA-262是官方名稱。ECMAScript 6(2015年6月發佈)是JavaScript的最新官方版本。html

  在HTML中,必須在<script>和</ script>標記之間插入JavaScript代碼。能夠放在HTML頁面的<body>和<head>部分。數組

JavaScript能夠以不一樣的方式「顯示」數據:瀏覽器

  • 使用window.alert()寫入警告框
  • 使用document.write()寫入HTML輸出
  • 使用innerHTML寫入HTML元素
  • 使用console.log()寫入瀏覽器控制檯

變量

聲明 

var person = "John Doe", carName = "Volvo", price = 200;

注意:聲明沒有值的變量將具備 undefined若是從新聲明JavaScript變量,它將不會丟失其值。ide

執行這些語句後,變量person仍將具備值「John Doe」:函數

var person = 'John Doe';
var person;
console.log(person);

運算

若是向字符串添加數字,那麼將該數字視爲字符串並鏈接。+=用於字符串拼接;測試

console.log(1 + 5 + '10' + 15); // 61015

若是一個變量的值是字符串的數字,執行++操做會轉成數字並計算 ; ++ 是操做變量的,不能是 ++1 或 1++ui

var number = '5'
console.log(typeof number) // string
console.log(number += 1); // 51
console.log(++ number); // 52
console.log(typeof number) //number

比較

  將字符串與數字進行比較時,JavaScript會在進行比較時將字符串轉換爲數字:空字符串轉換爲0非數字字符串轉換爲NaN  和NaN比較始終爲false,即便是和NaN本身。能夠用isNaN()判斷是不是非數字,再進行比較,鏈接,運算等操做。比較兩個字符串時,「2」將大於「12」,由於(按字母順序)1小於2。所以比較的時候最好轉成Number類型。this

function print(log){
    console.log(log);
}
base.js
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script src="base.js"></script>
    <script>
        print('5' > 4); //true
        print('' > -1); // true
        print('' < 1); // true
        print('n' > 0) // false
        print(0 === NaN) //false
        print(0 == NaN) //false
        print(NaN === NaN); // false
        print(NaN == NaN);  // false
    </script>
</body>
</html>

 數據類型

number,string,object, boolean,undefinedspa

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script src="base.js"></script>
    <script>
        print(typeof "John" );              // Returns string
        print(typeof 3.14)                  // Returns number
        print(typeof false)                 // Returns boolean
        print(typeof [1,2,3,4])             // Returns object
        print(typeof {name:'John', age:34}) // Returns object
        print(typeof a)                     // Returns undefined
    </script>
</body>
</html>

JavaScript具備動態類型。這意味着同一個變量能夠用做不一樣的類型:設計

var x;               // Now x is undefined
var x = 5;           // Now x is a Number
var x = "John";      // Now x is a String

null與undefined

在JavaScript中,null的數據類型是一個對象。

var person = null;           // Value is null, but type is still an object

undefined和null之間的區別:

typeof undefined             // undefined
typeof null                  // object
null === undefined           // false
null == undefined            // true

undefined比null更消極,null表示變量該是一個對象,undefined表示不知道要保存什麼類型;

數組和類

toString()

返回值:數組轉換爲(逗號分隔的)數組值的字符串。

 

注意:將對象轉成字符串時,用String()轉,由於String(null)不出錯, undefined.toString()或null.toString()會出錯

 

arr.join([separator])

返回值:用給定的分隔符將各數組元素組成字符串,相似於toString()

 

pop()和push() 【改變原數組】

分別在尾巴上彈出和推入元素;

返回值:分別返回彈出的元素和新數組的長度;shift()和unshift()相似,只是在前面彈出和推入元素

 

fill();【改變原數組】

將數組統一用給定參數填充;

返回值: 更改後的數組

 

filter(func[,thisValue]):

處理函數:  func(currentValue[,index,arr])  【下同】

返回值:傳入一個函數,根據函數的返回結果判斷是保留,並將保留結果做爲數組返回

 

find(func,[thisValue]); 

返回值:傳入一個函數,根據函數的返回結果返回第一個符合條件的數組元素值

 

findIndex(func[,thisValue]):

和find(func)相似,只是返回符合func()條件的數組元素的index值

返回值: 若是數組中的任何元素經過測試,則返回數組元素索引,不然返回undefined

 

forEach(func,[thisValue])

爲每一個元素調用處理函數func; thisValue是處理函數this的值,若是此參數爲空,則是Windows對象

返回值:  undefined

 

slice(start[, end])

返回值:  將指定部分的數組元素做爲新數組返回

 

splice(index,howmany,item...) 【改變原數組】

在index位置開始刪除howmany各元素,並插入item...

返回值:  返回刪除的值(若是有)

 

Javascript沒有對象:

因而模擬了一個對象:相似於hashmap的key:value保存結構

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script src="base.js"></script>
    <script>
           var stu = new Object(); // 可以保存key value的值
           stu.name = "王有財";
           stu.age = 21;
           stu.showInfo = function(){
               print(this);
               print('name = '+ this.name + ';age = ' + this.age);
           }
           stu.showInfo();
          
    </script>
</body>
</html>

結果:

{name: "王有財", age: 21, showInfo: ƒ}
 name = 王有財;age = 21
相關文章
相關標籤/搜索