天天看點

javaScript之變量與資料類型

http://www.cnblogs.com/yuanchenqi/articles/5980312.html

在了解變量之前,我們首先學習JavaScript的引入方式

JavaScript的引入方式

{#1 直接編寫#}
    <script>
        alert('hello zhanzhengrecheng')
    </script>


{#2 導入檔案#}
    <script src="hello.js"></script>  
      

一,變量

1.1 變量的含義

  即在程式運作過程中它的值是允許改變的量。與它對應的就是常量:即在程式運作過程中它的值是不允許改變的量

  js是跟python一樣同樣是弱類型的語言,python中定義變量沒有關鍵字: str = ‘james’

但是在js中定義變量使用關鍵字:var str = ‘james’;

  對于便利的了解:變量是資料的代号。如同人的名字一樣。

var num;   // 在JavaScript中使用關鍵字var聲明一個變量
      

  在JavaScript中,使用上面的文法,就可以聲明一個變量,以便在之後給其指定值。

var num;
    num = 128; // 這樣num做微值128的一個名字,有了名字,就可以在之後引用!
    document.write(num);   // 輸出128
      

1.2  變量的聲明和定義

1.2.1 先聲明後定義

var dog;
// alert(dog) //undefined  未定義
// 定義
dog = '小黃';
      

1.2.2 聲明立刻定義

var dog_2 = '小紅';
console.log(dog_2); //小紅
      

  

1.3,變量的規範

var 34bad;//不能以數字開頭

var per人;//不能包含中文

var bad-var;//非法的-

var var;//var就是一個關鍵字,是以很明顯不能用來做變量名
      

1 嚴格區分大小寫

2 命名時名稱可以出現字母、數字、下劃線、$ ,但是不能數字開頭,也不能純數字,不能包含關鍵字和保留字。

關鍵字:var number等

除了關鍵字 top name 也盡量不使用。
      

關鍵詞:

javaScript之變量與資料類型

保留字

javascript保留關鍵詞

javascript的保留關鍵字不可以用作變量,标簽或者函數名,有些保留關鍵字是作為javascript以後擴充使用。

javaScript之變量與資料類型

3 推薦駝峰命名法:有多個有意義的單詞組成名稱的時候,第一個單詞的首字母小寫,其餘的單詞首字母寫

4 匈牙利命名:就是根據資料類型單詞的的首字元作為字首

Camel 标記法
首字母是小寫的,接下來的字母都以大寫字元開頭。例如:
    var myTestValue = 0, mySecondValue = "hi";


Pascal 标記法
首字母是大寫的,接下來的字母都以大寫字元開頭。例如:
    Var MyTestValue = 0, MySecondValue = "hi";


匈牙利類型标記法
在以 Pascal 标記法命名的變量前附加一個小寫字母(或小寫字母序列),
說明該變量的類型。例如,i 表示整數,s 表示字元串,如下所示“
    Var iMyTestValue = 0, sMySecondValue = "hi";
      

 二,運算符

  js中的運算符跟python中的運算符有點類似,但也有不同。所謂運算,在數學上,是一種行為,通過已知量的可能的組合,獲得新的量。

2.1 指派運算符

以var x = 12,y=5來示範示例

javaScript之變量與資料類型

2.2 算數運算符

var a = 5,b=2

javaScript之變量與資料類型

2.3比較運算符

var x = 5;

javaScript之變量與資料類型

2.4 特殊情況

  字元串拼接+字元串運算 特殊情況。python中有拼接字元串中更簡便的辦法,其實在js中也有,大家可以百度引擎搜尋es6模闆字元串。(擴充)

var  firstName  = '星';
var lastName = 'Li';
var name = '伊拉克';
var am = '美軍';
// 字元串拼接
var str = "2003年3月20日,"+name+"戰争爆發,
以美軍為主的聯合部隊僅用20多天就擊潰了薩達姆的軍隊。
這是繼十多年前的海灣戰争後,"+am+"又一次取得的大規模壓倒性軍事勝利。"
var fullStr = str;
console.log(fullStr)

var fullName = firstName +" "+ lastName;
console.log(fullName)
      
// 不能對字元串進行+運算 隻能拼接
var a1 = '1';
var a2 = '2';
console.log(a1-a2) //12
      
var b1 = 'one';
var b2  = 'two';

// NaN. ==== not a number 是number類型
console.log(typeof(b1*b2))
      

三,資料類型

  資料類型包括:基本資料類型和引用資料類型

  基本資料類型指的是簡單的資料段,引用資料類型指的是有多個值構成的對象。

  當我們把變量指派給一個變量時,解析器首先要确認的就是這個值是基本類型值還是引用類型值

3.1 基本資料類型

var dog;
dog="小虎子"; //字元串,他們總被包含在雙引号(或單引号)中
var num;
num=1;//數字,它們裸露的出現了
var strNum;
strNum="1";//但是現在strNum所引用的是一個字元串,因為它被包含在引号中了
var badNum;
badNum=3.345;//一個小數,因為它帶有一個小數點
badNum=.2;//仍然是一個小數,這句代碼與badNum=0.2是一樣的!
badNum = 0.4.5;//當然,這句代碼是錯的,一個非法數字
      

  undefined

Undefined 類型
    Undefined 類型隻有一個值,即 undefined。當聲明的變量未初始化時,
    該變量的預設值是 undefined。
    當函數無明确傳回值時,傳回的也是值 "undefined";


Null 類型
    另一種隻有一個值的類型是 Null,它隻有一個專用值 null,即它的字面量。
    值 undefined 實際上是從值 null 派生來的,是以 ECMAScript 把它們定義為相等的。
    盡管這兩個值相等,但它們的含義不同。undefined 是聲明了變量但未對
    其初始化時賦予該變量的值,null 則用于表示尚未存在的對象(在讨論 typeof 
    運算符時,簡單地介紹過這一點)。如果函數或方法要傳回的是對象,那麼找不
    到該對象時,傳回的通常是 null。
    var person=new Person()
    var person=null
      
var d1;
//表示變量未定義
console.log(typeof d1)
      

  null

var c1 = null;//空對象. object
console.log(c1)
      

  boolean

簡介
Boolean類型僅有兩個值:true和false,也代表1和0,實際運算中true=1,false=0
布爾值也可以看作on/off、yes/no、1/0對應true/false
Boolean值主要用于JavaScript的控制語句,例如
    if (x==1){
    y=y+1;
    }else    {
    y=y-1;
    }
      
var b1 = false;
console.log(typeof b1)
      

  string

var str  = '123'
console.log(typeof str)
      

3.2 字元串

簡介
是由Unicode字元、數字、标點符号組成的序列
字元串常量首尾由單引号或雙引号括起
JavaScript中沒有字元類型
常用特殊字元在字元串中的表達
字元串中部分特殊字元必須加上右劃線\
常用的轉義字元 \n:換行  \':單引号   \":雙引号  \\:右劃線
      

字元串相連

var s1="Hello,";
    s1=s1+"World!"; 
    alert(s1);
    s1+="!!!!";
    alert(s1);
      

3.3 數學運算與比較

//加法 + 
    //減法 -
    //乘法 *
    //除法 / 
    //自增 ++
    //自減 --
    var a = 12; var b = 30; var c = a+b;
    alert(c);//輸出42
    c=b-a;
    alert(c);//輸出18
    c=c*2;
    alert(c);//輸出36
    c=c/2;
    alert(c);//輸出18
    c = 12;
    c++;//這與c=c+1;效果是一樣的
    alert(c);//輸出13
    c--;//這與c=c-1;效果是一樣的
    alert(c);//輸出11
    //自增與自減運算符出現的地方也有講究
    c=20;
    alert(c++);//輸出20,因為++寫在變量後面,這表示變量c完成運算之後,再将其值增1
    alert(c);//現在将輸出21,自減運算符也與些相似
    //如果隻是類似這樣的計算
    c = c+12; //可以這樣寫
    c+= 12;//這與寫c= c+12;效果是一樣的
    //類似其它的運算也有簡便的方法
    c-=3;//c=c-3
    c*=4;//c=c*3;
    c/=2;//c=c/2;
      

  要注意的是,在JavaScript,連接配接字元串時也使用“+”号。當字元串與數字相遇時?——JavaScript是弱類型語言

var num=23+45;
alert("23+45等于"+num);//表達式從左往右計算,字元串之後的數字都會當成字元串然連接配接
alert("23+45="+(23+45));//使用括号分隔
      

  比較操作符:<,>,<=,>=,==,!=,!;比較操作符傳回布爾值

//小于 <
//大于 >
//小于或等于 <=
//大于或等于 >=
//相等 ==
//不相等 !=
alert(2<4);//傳回true
alert(2>4);//傳回false
alert(2<=4);//傳回true
alert(2>=2);//傳回true
alert(2==2);//傳回true
alert(2!=2);//傳回true
      

3.4 表達式的組合

alert( (2<4)==(5>3)==(3<=3)==(2>=2)==(2!=2)==(2==2)==true );
      

3.5 邏輯運算符

// &&邏輯與,當兩邊的值都為true時傳回true,否則傳回false
// || 邏輯或,當兩邊值都為false時傳回false,否則傳回true
// ! 邏輯非
alert(true && false);//輸出false
alert(true && true);//輸出true
alert(true || false);//輸出true
alert(false || false);//輸出false
alert(!true);//輸出false
      

四,資料類型轉換

JavaScript屬于松散類型的程式語言
變量在聲明的時候并不需要指定資料類型
變量隻有在指派的時候才會确定資料類型
表達式中包含不同類型資料則在計算過程中會強制進行類别轉換


數字 + 字元串:數字轉換為字元串
數字 + 布爾值:true轉換為1,false轉換為0
字元串 + 布爾值:布爾值轉換為字元串true或false
      

  由于JavaScript是弱類型語言,是以我們安全可以将字元串和數字(兩個不同類型的變量)進行相加,這個我們在前面已經示範過了,當然,不僅僅可以将字元串和資料相加,還可以将字元串與資料相乘而不會出現腳本錯誤!

var str ="some string here!"; var num = 123;
    alert(str*num);//将輸出NaN,因為乘法運算符隻能針對數字,
    //是以進行運算時計算機會将字段串轉換成數字
    //而這裡的字元串轉換成數字将會是NaN
    //NaN是一個特殊的值,含義是"Not A Number"-不是一個數字,
    //當将其它值轉換成數字失敗時會得到這個值
    str ="2";
    alert(str*num);//将輸出246,因為str可以解析成數字2    
      
var bool = true;
    alert(bool*1);//輸出1 ,布爾值true轉換成數字為1,事實上将其它值轉換在數字最簡單的方法就是将其乘以1
    bool = false;
    alert(bool*1);//輸出0
    alert(bool+"");//輸出"flase",将其它類型轉換成字元串的最簡單的方法就是将其寫一個空字元串相連
    alert(123+"");//數字總能轉換成字元串
    var str = "some string";
    alert(!!str);//true,因為非運算符是針對布爾值進行運算的,是以将其它類型轉換成布爾值隻須将其連續非兩次
    str ="";
    alert(!!str);//輸出false,隻有空字元串轉換成布爾值時會是false,非空字元串轉換成布爾值都會傳回true
    var num =0;
    alert(!!num);//false
    num=-123.345;
    alert(!!num);//true,除0以外的任何數字轉換成布爾值都會是true
    //還有一個非常重要的是,空字元串轉換成數字将會是0
    alert(""*1);//輸出0
      

  擷取變量類型 typeof 運算符

var bool = true;
    alert(typeof bool);//輸出boolean
    var num =123;
    alert(typeof num);//輸出number
    var str = "some string here";
    alert(typeof str);//輸出string
    var strNum = "123";
    alert(typeof strNum);//輸出string
    strNum *= 1;
    alert(typeof strNum);//輸出number
      

 

4.1 将數值類型轉化成字元串類型

var n1 = 123;
var n2 = '123';
var n3 = n1+n2;
// 隐式轉換
console.log(typeof n3);
      
// 強制類型轉換String(),toString()
var str1 = String(n1);
console.log(typeof str1);

var num = 234;
console.log(num.toString())
      

4.2 将字元串類型轉化成數值類型

var  stringNum = '789.123wadjhkd';
var num2 =  Number(stringNum);
console.log(num2)

// parseInt()可以解析一個字元串 并且傳回一個整數
console.log(parseInt(stringNum))
console.log(parseFloat(stringNum));
      

4.3 任何資料類型都可以轉換成boolean類型

var b1 = '123';
var b2 = 0;
var b3 = -123

var b4 = Infinity; 
var b5 = NaN;

var b6; //undefined
var b7 = null;

// 非0既真
console.log(Boolean(b7))
      

不經一番徹骨寒 怎得梅花撲鼻香