JavaScript最初的目的:判斷客戶端的輸入;
JavaScript現在的意義:用于頁面特效(PC端的網頁效果)、移動端(移動web和APP)、異步和服務器交互、服務端開發(nodejs)。
——01——
JavaScript語言:是世界上用的最多的腳本語言(腳本語言,不需要編譯,直接運行時邊解析邊執行的語言),是一種客戶端(瀏覽器)的腳本語言。需要編譯的語言:C、C++、Java、C#。
編譯和解釋的不同:
var a = 0;
console.log(a)
var b = "abc";
編譯:一次性把代碼轉換成CPU可以看懂的的語言,一行一行執行(代碼執行的效率高);
解釋:一行一行解析,解析一行執行一行。
JavaScript的組成:
ECMAScript:JavaScript的語法規范
DOM:JavaScript操作網頁上元素的API
BOM:JavaScript操作瀏覽器部分功能的API。
引入JavaScript
(1)HTML頁面書寫JavaScript
<script>
console.log("hello world");//在控制臺輸出字符串
alert("hello world");//彈出消息框
</script>
(2)引入外部JavaScript文件
<script src="js.js"></script>
--02--
script標簽的屬性
? ?Async:異步,多個人同時做多件事;
? Sync : 同步,一個人有序的做多件事情。
? type屬性:type=“text/Javascript”,可以省略;
? Async:async="async",值可以省略,但不建議省略,立即異步下載外部js,不影響頁面其他的操作,js下載完畢立即執行;
?defer:defer=“defer”,值可以省略,也是異步執行,腳本延遲到文檔完全被解析和顯示后再執行,只有外部腳本可以使用。
JavaScript的變量
? 變量是在計算機中存儲數據的一個標識符;變量可以在聲明的時候賦值,也可以稍后賦值,例如:var number= 50;var name= “王五”;或者 var name = “王五”;可以在一行上定義多個變量:var name,sex,age。
弱類型:JavaScript是弱類型的腳本語言
var age = 90;
age = “王五”;
這兩行代碼在JavaScript中是合法的,原因就是:JavaScript是弱類型的語言。但不建議這么使用。
變量命名規則和規范
? ? 規則(必須遵守):由下劃線、字母、數字、$組成;不能是關鍵字和保留字、區分大小寫
? ? 規范(建議遵守):變量的名稱要有意義、變量的命名遵守駝峰命名法,首字母小寫,第二個單詞的首字母大寫。例如:userName
注釋:
單行注釋——//單行注釋
多行注釋——/*多行注釋*/
注釋的應用:一般用于解釋某些復雜代碼的邏輯,方便于后期的維護和開發;一般用于對整個模塊進行分割劃分,方便于代碼查找代碼和維護;一般用于:模塊、函數、復雜邏輯注解、文件注解、維護記錄等。
PS:大家在寫代碼的時候,盡量寫注釋,方便日后查看。
——03——
數值類型
數據類型:
? ?簡單(基本、值)數據類型,Number、 String、Boolean、Undefined、Null;
? ?復雜(引用)數據類型:Object、Array、Date;
? ?查看當前變量的數據類型:typeof ?name / typeof(name);
數值字面量
? ?字面量:固定的值,讓你從“字面上”理解其含義;
? ?數值字面量:var age = 18;//數值字面量,18為字面值;
Number類型
? ?十進制,var num = 9;進行算數計算時,八進制和十六進制表示的數值最終都將被轉換成十進制數值;
? ?十六進制,var num = 0xA;數字序列范圍:0~9以及A~F;
? ?八進制,var num1 = 07;//對應十進制的7,var num2 = 019;//對應十進制的19。數字序列范圍:0~7,如果字面值中的數值超出了范圍,那么前導零將被忽略,后面的數值將被當做十進制數值解析;
? ?浮點數,var n = 5e-324;最高精度是17位小數,但在進行算數計算時其精確度遠遠不如整數,如:var result = 0.1+0.2;//結果不是0.3,而是0.3000000000000004;永遠不要測試某個特定的浮點數值(不要判斷兩個浮點數是否相等)。
數值范圍
? ? 最小值:Number.Min_Value,這個值為:5e-324
? ? 最大值:Number.Max_value,這個值為:1.7976931348623157e+308
? ? 無窮大:Infinity
? ? 無窮小:-infinity
數值檢測
NaN 非數值(Not a ?Number):console.log("abc/18"); ?//結果是NaN
? ? ? isNaN():任何不能被轉換為數值的值都會導致這個函數返回true:isNaN(NaN);//true,isNaN(123);//false
String類型
? ? ?字符串字面量:var name = “zhangsan”;//zhangsan 字面量;
? ? ? 字符串要用引號引起,單引號和雙引號的作用是等效的;
? ? ? 字符串是由一個一個字符組成的,獲取一個字符串中的字符個數可以使用length,例如:var name = “zs”; alert (name.length);//2
字符串是不可變的,也就是說,一旦創建,它們的值不能改變。要想改變某個變量的值,首先要銷毀原來的字符串,然后在用另一個包含新值的字符串填充該變量。
Boolean類型
? ? ?有兩個字面量:true和false,并且區分大小寫;雖然Boolean類型的字面值只有兩個,但ECMAScript中所有類型的值都由于這兩個Boolean值等價的值。
例如:
var ?result = Boolean("a");
console.log(result);//true
var result = Boolean (100);
console.log(result);//true
轉換成Boolean類型
任何類型可以轉換成Boolean類型,一般使用在流程控制語句后面,
例如:
var ?message = "hello";if(message){alert(message+"world")};
當變量的值是空字符串、0、NaN、null、undefined都轉換為false。
Undefined類型
是一種比較特殊的類型,表示變量未賦值,這種類型只有一種值就是undefined。
例如:
var message;console.log(message);//結果是undefined
undefined是Undefined類型的字面量。
typeof message 獲取到的是"undefined"。