JavaScript學習備忘
1.您只能在 HTML 輸出流中使用 document.write 如果在文檔已加載後使用它(比如在函數中),會覆蓋整個文檔
2.數組 : [40, 100, 1, 5, 25, 10] <====>對象名 : {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue", showName:function(name) {alert("我的名字"+ name);}}
3.使用反斜杠‘\‘對代碼進行折行,‘\‘不能在代碼連接處使用(比如方法名和小括號中間, 還有".")
4.沒有聲明值的變量值為undifined, js中重新聲明變量,變量值不會丟(第二次不賦值)
5.基本類型(值類型) : String, Number, Boolean, Null, undifined, symbol
引用數據類型 : Object, Array, Function
創建數組方式 : var cars=new Array() =>var cars=new Array("Saab","Volvo","BMW")=>var cars=["Saab","Volvo","BMW"];
屬性的兩種尋址方式 : name=person.lastname; <===> name=person["lastname"];
Undefined 這個值表示變量不含有值。可以通過將變量的值設置為 null 來清空變量
創建對象的方式 : var 方法名 = {name:"張三", demoMethod:function(){alert("This is a Method...");}}
給對象新增屬性 : 直接增加即可 ===> 方法名.age = 18;
str = 方法名.demoMethod, 用訪問屬性的方式訪問對象方法(即方法去掉()小括號),會以字符串的形式返回方法名對應的整段代碼
可以在對象內定義方法,方法作為對象的屬性來儲存,
也可以在直接定義函數(不在對象內) ==> function showName() { ......;}
方法可以賦值給變量 ==> var method = function() {.......;}
6.局部變量 : 在函數運行以後被刪除
全局變量 : 在函數外聲明的變量是全局變量, 會在頁面關閉後被刪除
carname="Volvo" =>把值賦給未聲明的變量(缺了var),該變量會自動變成window的一個屬性,是可配置屬性,可以刪除掉.
delete var1 ==> var聲明過的變量不可以刪除.
在 HTML 中, 全局變量是 window 對象: 所有數據變量都屬於 window 對象
7.字符串
var character = carname[7] ==>可以使用索引位置訪問字符串的某個字符.索引從0開始
carname.length ==>可以使用內置屬性 length 來計算字符串的長度
var y = "He is called \"Johnny\""; ==>可以使用反斜杠來在字符串內使用引號.
字符串可以創建為對象,但是 ==>var x = "John"; >> var y = new String("John"); >> (x === y) // 結果為 false,因為 x 是字符串,y 是對象
字符串屬性和方法,查閱菜鳥教程
8.比較運算符 : 不絕對等於(值和類型有一個不相等,或兩個都不相等) ===> !==
9.for...in循環 for (x in person) {......;}
switch語句的case使用的是恒等計算符(===),所以要註意數據類型的匹配!
10.js標簽 <-- lable : 語句 --> 或者 <-- lable : {代碼塊} -->
可以用break跳出js代碼塊. ==> break lableDemo;
continue不管加不加標簽,都只能用在循環中.
11. typeof操作符
typeof 數組 的返回類型是Object , 在JavaScript中,數組是一種特殊的對象類型
typeof null; 返回Object; ==> null是一個只有一個值的特殊類型。表示一個空對象引用
typeof method1(); 返回function
typeof undifined; 返回undifined
12.null和undifined的區別
undifined : 是所有沒有賦值變量的默認值,自動賦值
null : 主動釋放一個變量引用的對象,表示一個變量不再指向任何對象地址
undifined==null; true
undifined===null; false ==>undifined和null值相等,類型不相等
undefined 是一個沒有設置值的變量
null是一個只有一個值的特殊類型。表示一個空對象引用
13. Array和Date無法通過typeof來判斷數據類型,因為都是 返回 object
==>可以使用constructor 屬性來獲取他們的構造函數,從而知道確切的類型
14.全局方法String()可以把其他類型轉換為字符串,還有toString()方法
全局方法Number()可以把字符串轉換為數字,其他的轉換為NaN
一元運算符+ (加號) 可以把字符串轉換成數字, x = + "123"; 不是數字的轉換成NaN
15.JavaScript的自動轉換類型情況比較多,查閱 : http://www.runoob.com/js/js-type-conversion.html 最下邊的表格
16.正則表達式
正則表達式通常應用於兩個String方法,search() <--返回字符串中匹配的字符串開始的index-->和replace() <--替換字符串中的某些字符串-->
更多內容請搜索 : 正則表達式 自行查看
17.try, catch, finally, throw
throw允許我們自定義異常. ==> if(x < 5) throw "太小"; throw的字符串信息會被catch語句捕捉到
18. 調試 debugger; 該語句相當於斷點,在F12開發者工具中可以調試代碼
19. 變量提升 : 即使變量先使用後聲明,也不會出錯,因為解釋器會悄悄地把聲明語句提升到前邊
如果是初始化過的變量,則不會觸發變量提升
20.嚴格模式 : "use strict"
"use strict"只允許出現在腳本或函數的開頭,在函數中的"use strict"是局部作用域
嚴格模式限制:不允許使用未聲明的變量,不允許刪除變量或對象等等.具體內容 : http://www.runoob.com/js/js-strict.html
21.JavaScript 中的所有數據都是以 64 位浮點型數據(float) 來存儲
所以精確度都很難確定,比如0.1+0.2 != 0.3 可以用乘除法(整體放大縮小)來解決 : (0.1*10 + 0.2*10)/10 == 0.3
22.HTML表單自動驗證(無需js),在input標簽內加上required="required"屬性即可,如果為空則阻止提交表單
數據驗證分為 : 客戶端數據驗證 和 服務器端數據驗證
約束驗證HTML輸入屬性 : disabled, max, min, pattern, required, type
比如pattern屬性 ==> <input pattern="[A-z]{3}
">
23. 約束驗證相關內容查看 : http://www.runoob.com/js/js-validation-api.html (約束驗證DOM方法,DOM屬性,Validaty屬性,checkValidaty()等等)
24. This : 表示對當前對象的引用
在方法中,this 表示該方法所屬的對象
如果單獨使用,this 表示全局對象
在函數中,this 表示全局對象
在函數中,在嚴格模式下,this 是未定義的(undefined)
在事件中,this 表示接收事件的元素
類似 call() 和 apply() 方法可以將 this 引用到任何對象
方法==>對象調用的是方法 函數==>直接調用的是函數
關於apply(), call(), bind() ===>http://www.cnblogs.com/moqiutao/p/7371988.html
25. let 和const
ES6之前,js只有兩種作用域:(局部變量||全局變量),而ES6新增的let和const的作用域則是(塊級變量||全局變量)
在 JavaScript 中, 全局作用域是針對 JavaScript 環境
在 HTML 中, 全局作用域是針對 window 對象
var==> 1).代碼塊中聲明的變量也是全局變量
2).聲明的變量屬於window,可以使用 window.carName 訪問變量
3).var變量可以重復聲明,也可以先使用後聲明.
let==> 1).代碼塊中聲明的變量為塊級作用域
2).聲明的變量屬於js環境,不能先使用後聲明
3).不可重復聲明,不可先使用後聲明,不能和var在相同作用域聲明相同變量名
const==> 1).123同let
2).聲明的是"常量",但並非是真正的常量,用const聲明的對象,可以修改屬性,聲明的數組,可以修改元素.但都不能重新給對象賦值.
26. JSON
JSON 通常用於服務端向網頁傳遞數據,是一種輕量級的數據交換格式,JSON是獨立的語言
JSON對象 : {"name":"Runoob", "url":"www.runoob.com"} 簡單的json對象
{ "sites" : [{"name":"Runoob", "url":"www.runoob.com"}, {"name":"Runoob", "url":"www.runoob.com"}] } 復合型的json對象.
[ ] 用來保存數組,[ ]外邊不用加引號. { }用來保存對象
JSON字符串轉換為JS對象 ==> 使用 JavaScript 內置函數 JSON.parse() 將字符串轉換為 JavaScript 對象
把JSON字符串作為參數傳入JSON.parse(str),即可返回JS對象.
相對的,JSON.stringify(JS對象), 可以把js對象轉換為JSON字符串.
==>註意區分JSON對象和JSON字符串!
27.javascript:void(0) : void()的小括號裏可以跑代碼,但是javascript:void()不返回任何值
<a href="javascript:void(0)">單擊此處什麽也不會發生</a>
<a href="javascript:void(alert(‘Warning!!!‘))">點我!</a> ==>點擊後會彈出alert框
href="#"與href="javascript:void(0)"的區別 :
href="#"是指鏈接到當前頁面, href="#pictures",是指定位到id=pictures的節點位置
javascript:void(0), 僅僅表示一個死鏈,如果你要定義一個死鏈接請使用 javascript:void(0)
JavaScript學習備忘