JavaScript學習(一)——基礎知識查漏補缺

來源:互聯網
上載者:User

標籤:現在   基本   相等   聲明   開頭   就是   echarts   data   別人   

標籤script

我們知道,html要使用js就要使用<script>標籤。 
兩種方式: 
一是直接在<script>這裡</script>寫入代碼。 
二是在別的檔案寫好js代碼,然後script標籤的src屬性引入進來。

 

script其實有6個屬性(全都是可選):

  1. src:包含要執行代碼的外部檔案;
  2. language:現在已廢棄;
  3. type:表示編寫代碼使用的指令碼語言的內容類型;
  4. charset:指定src引入代碼的字元集;
  5. async:表示應該立即下載指令碼;
  6. defer:表示指令碼可以延遲到文檔完全被解析和顯示後再執行。

    type的解釋也說明了一個問題,<script></script>中間的代碼不必需是js代碼。如果不聲明,則預設為text/javascript,此時代碼按照js的規則解析。如果聲明了其他的不可識別的類型,則它和其中的內容會被忽略掉。 
    例如: 
    <script type=‘text/html‘ id="tpl"></script> 
    <script type=‘text/foo-template‘ id="foo-tpl"></script> 
    有些模板引擎就利用了它來實現DOM節點的模板填充。

注意:<script><script> 中間不要在任何地方出現‘</script>‘字串

 關鍵字,保留字

以前只記住了幾個關鍵字,現在還注意到了保留字,保留字就是在js當中其實沒啥用的但是就是不給用來當做命名的單詞,多為Java語言的關鍵字。

 資料類型

typeof操作符,可以判斷某值的資料類型。我們都知道,一共六種。 
1、undefined 
2、boolean 
3、string 
4、number 
5、function 
6、object

 undefined與null

undefined 指變數尚未初始化 
null 指變數值為一個Null 物件指標 
其實它們的意思和用法基本都是一致的,在js裡,我們完全可以只用undefined而不去使用null,這樣混不混淆都無所謂了。 
唯一的區別: 
console.log(typeof undefined)--undefined 
console.log(typeof null)--object

阮一鋒的解釋: 
null表示"沒有對象",即該處不應該有值。典型用法是:

(1) 作為函數的參數,表示該函數的參數不是對象。 
(2) 作為對象原型鏈的終點。

Object.getPrototypeOf(Object.prototype)// null

undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。典型用法是: 
(1)變數被聲明了,但沒有賦值時,就等於undefined。 
(2) 調用函數時,應該提供的參數沒有提供,該參數等於undefined。 
(3)對象沒有賦值的屬性,該屬性的值為undefined。 
(4)函數沒有傳回值時,預設返回undefined。

var i;i // undefinedfunction f(x){console.log(x)}f() // undefinedvar  o = new Object();o.p // undefinedvar x = f();x // undefined
 number

轉換數值的三個方法:

Number(),parseInt(),pasreFloat()

Number()功能比較強大,規則如下: 
true:1 
false:0 
null:0 
undefined:NaN 
"":0 
"011":11(忽略前面的0) 
"011.1":11.1(忽略前面的0) 
"0x11":17(0x開頭十六進位) 
"別的格式的字元":NaN

parseInt()規則如下: 
僅轉換字串,其他非數字類型統一返回NaN 
"":NaN 
"011":11(忽略前面的0) 
"011.1":11(忽略前面的0) 
"0x11":17 
"123abc":123 
"abc123":NaN

parseFloat()規則如下: 
僅轉換字串,其他非數字類型統一返回NaN 
"":NaN 
"011":11(忽略前面的0) 
"011.1":11(忽略前面的0) 
"0x11":0(忽略前面的0) 
"123abc":123 
"abc123":NaN

整數還可以通過二進位,八進位,十六進位來表示。 
其中,八進位字面值的第一位必須是0 
十六進位字面值的前兩位必須是0x

我們從字串轉過來的時候如果有要求則要再傳一位進位數: 
parseInt("011",2):3 
parseInt("011",8):9 
parseInt("011",16):17 
parseInt("0xaa",16):170 
parseInt("aa",16):170

注意:程式在計算的時候0開頭的數字會被解析為八進位,0x開頭的數字會被解析為十六進位。最終結果為十進位。因此,我們做計算的時候最好不要用帶0開頭的數字進行計算,避免讓別人看迷糊

 等號 

一個等號:賦值 
兩個等號:判斷相等 
三個等號:判斷全等

 

一、賦值問題 
在echarts.js源碼中看到了一句:

var ecModel = this._model = new GlobalModel(null, null, theme$$1, optionManager);

其中連續賦值了兩次,後來查閱資料,發現執行過程是這樣的:

1、var ecModel =new GlobalModel(null, null, theme$$1, optionManager);2、this._model = new GlobalModel(null, null, theme$$1, optionManager);

連續多個賦值操作,可從左至右拆分成每個變數直接等於最後的值,而不會執行像var ecModel = this._model這樣的語句。

其實不推薦這樣寫,這種寫法能避開就避開唄。

二、關於 ==

== 和 != 會先轉換再比較

比較規則: 
1、一個布爾值,一個數字 true:1,false:0 
2、一個字串,一個數字 先轉成數字 
3、一個對象,一個數字 先調用對象的valueOf()再按前面的規則 
4、兩個對象 比較是否同一個對象 
例: var a={},b={}; console.log(a==b);//false 
5、null==undefined true 
6、NaN==NaN false

 label 語句
label語句可以在代碼中添加標籤,以便將來使用。一般與迴圈語句的break和continue配合使用。舉個例子:我有一個嵌套迴圈,當滿足條件的時候執行語句並跳出外層迴圈。var num=0;firstfor:for(var i=0;i<10;i++){    secondfor:    for(var j=0;j<10;j++){        if(i==5 && j==5){          break firstfor;//跳出第一個for迴圈        }        num++;    }}alert(num); //num=55
 重載 

js沒有重載!

重載只在java裡只說過,js沒聽說過。然而百度到的全都是js實現重載的方法。

我的疑問(等待回答):

既然js都不支援重載了,為什麼還要特意去模仿實現重載呢?

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.