JavaScript程式碼執行順序和資料型別

追逐。發表於2019-02-08

一、程式碼執行順序

  1. 瀏覽器解釋程式碼是自上而下的,遇到script標籤會直接解讀js程式碼,下面的html元素就不會被解析,下面的html元素就獲取不到,直到讀取完畢。
  2. src引入的圖片資源/js資源,href引入的css資源,整個文件也需要載入,到資源載入完畢,就可以執行程式碼。
<!-- 報錯 -->
<script>
    document.getElementById('box').onclick = function(){
        alert(1);
    }
</script>
<div id="box">123</div>
複製程式碼
<!-- 正常 -->
<script>
    //當我們的視窗內所有的資源都載入完成之後,執行其中的程式碼
    window.onload = function(){
        document.getElementById('box').onclick = function(){
            alert(1);
        }
    }
</script>
<div id="box">123</div>
複製程式碼
  1. 當alert放到div的上方,開啟視窗的時候,div不載入,點選確定後載入,重新整理頁面後div消失。
  2. 當alert放到div的下方,如果在chrome的64版本以上,包括360、qq等瀏覽器的最新版本,開啟視窗的時候,div不載入,點選確定後載入,重新整理頁面後div消失。**alert對話方塊不會啟用所在的選項卡,**當我們新建選項卡時,顯示正常。如果在火狐瀏覽器,就是正常的出現div,出現彈窗。不阻止上面元素的載入。
  3. 所有的alert程式碼在chrome中只在第一次阻止頁面的載入,但是在火狐瀏覽器都是正常的。

二、資料型別

  1. 數值型(number):包括小數和整數,在js中,小數運算是不精確的,不能用它做判斷。
var num = 12.3;
console.log(typeof num);//number
複製程式碼
  1. 字串(string):字元連成的串,可以用""、''包裹,此時字串不能換行,``反引號包裹可以換行。
var str = '你好';
console.log(typeof str);//string
複製程式碼
  1. 布林值(boolean):true/false。
var b = true;
console.log(typeof b);//boolean
複製程式碼
  1. function(function):沒有名字的函式,稱之為匿名函式,不能莫名其妙的出現一個匿名函式。具名函式可以通過函式名+()。
function fn(){
    alert(1);
}
console.log(typeof fn);//function
複製程式碼
  1. 物件(object):簡單的寫法為{},實際上空的一個物件是使用new Object得到的。
//var obj = {};
var obj = new Object;
console.log(typeof obj);//object
複製程式碼
  1. 陣列(object):陣列中可以存放任何資料型別,簡單寫法[資料, 資料, 資料],空陣列為[],是由new Array創造的。
//var arr = [];
var arr new Array;
console.log(typeof arr);//object
複製程式碼
  1. null(object):本質是一個空物件指標,是找物件的時候沒找到。
var n = document.getElementById('box');
console.log(typeof n);//object
複製程式碼
  1. undefined(undefined):宣告瞭但是並未賦值。
var u;
console.log(typeof u);//undefined
複製程式碼

注:

  • js中有5種簡單資料型別(也稱為基本資料型別):undefined、null、boolean、number、string,還有1種複雜資料型別:object,object本質上是由一組無序的名值對組成的。
  • 對一個值使用typeof操作符可能返回下列某個值:undefined、boolean、string、number、object、function。
  • 對於尚未宣告過的變數,只能執行一項操作,即使用typeof操作符檢測其資料型別,對於未初始化的變數執行typeof操作符會返回undefined,而對未宣告的變數執行typeof操作符同樣也會返回undefined。
var message;//這個變數宣告之後預設取得了undefined值

//下面這個變數並沒有宣告
//var age;

alert(typeof message);//"undefined"
alert(typeof age);//"undefined"
複製程式碼
  • undefined值是派生自null值的,因此對他們的相等性測試要返回true。
alert(null == undefined);//true
複製程式碼

相關文章