一、程式碼執行順序
- 瀏覽器解釋程式碼是自上而下的,遇到script標籤會直接解讀js程式碼,下面的html元素就不會被解析,下面的html元素就獲取不到,直到讀取完畢。
- 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>
複製程式碼
- 當alert放到div的上方,開啟視窗的時候,div不載入,點選確定後載入,重新整理頁面後div消失。
- 當alert放到div的下方,如果在chrome的64版本以上,包括360、qq等瀏覽器的最新版本,開啟視窗的時候,div不載入,點選確定後載入,重新整理頁面後div消失。**alert對話方塊不會啟用所在的選項卡,**當我們新建選項卡時,顯示正常。如果在火狐瀏覽器,就是正常的出現div,出現彈窗。不阻止上面元素的載入。
- 所有的alert程式碼在chrome中只在第一次阻止頁面的載入,但是在火狐瀏覽器都是正常的。
二、資料型別
- 數值型(number):包括小數和整數,在js中,小數運算是不精確的,不能用它做判斷。
var num = 12.3;
console.log(typeof num);//number
複製程式碼
- 字串(string):字元連成的串,可以用""、''包裹,此時字串不能換行,``反引號包裹可以換行。
var str = '你好';
console.log(typeof str);//string
複製程式碼
- 布林值(boolean):true/false。
var b = true;
console.log(typeof b);//boolean
複製程式碼
- function(function):沒有名字的函式,稱之為匿名函式,不能莫名其妙的出現一個匿名函式。具名函式可以通過函式名+()。
function fn(){
alert(1);
}
console.log(typeof fn);//function
複製程式碼
- 物件(object):簡單的寫法為{},實際上空的一個物件是使用
new Object
得到的。
//var obj = {};
var obj = new Object;
console.log(typeof obj);//object
複製程式碼
- 陣列(object):陣列中可以存放任何資料型別,簡單寫法[資料, 資料, 資料],空陣列為[],是由
new Array
創造的。
//var arr = [];
var arr new Array;
console.log(typeof arr);//object
複製程式碼
- null(object):本質是一個空物件指標,是找物件的時候沒找到。
var n = document.getElementById('box');
console.log(typeof n);//object
複製程式碼
- 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
複製程式碼