javascript(簡稱JS)是一種高級的編程語言,一種具有與HTML和CSS一樣重要地位的前端編程語言,主要用來為Web頁面添加交互行為,使頁面變得更加生動有趣。在前端開發中,無論是用框架還是純JS開發,熟練使用JS都是必不可少的。
下面我們主要來分享一些關于JS的筆記:
1. 基本數據類型與引用數據類型
在JS中,有6種基本數據類型:string、number、boolean、null、undefined、symbol。基本數據類型在賦值過程時是按值傳遞的。JS還有一種引用數據類型,如Object、Array、Function、Date等,引用數據類型在賦值過程中傳遞的是引用。
例如:
```
let a = 1;
let b = a;
a = 2;
console.log(a); // 2
console.log(b); // 1
let arr1 = [1, 2];
let arr2 = arr1;
arr1.push(3);
console.log(arr1); // [1, 2, 3]
console.log(arr2); // [1, 2, 3]
```
可以看到,基本數據類型的a值改變后,并不會影響到b的值,因為a和b在賦值時傳遞的是值,而不是引用;而引用類型的arr1改變后,arr2也會跟著改變,因為它們兩者其實都指向同一個內存地址。
2. 變量提升
在JavaScript中,一些變量或函數可以在它們實際定義之前使用,這就是變量提升的特性。變量提升的本質是函數和變量聲明被提升到了作用域的最頂端。例如:
```
console.log(a); // undefined (a被聲明,但沒有初始化,因此為undefined)
var a = 1;
console.log(a); // 1
console.log(b); // Uncaught ReferenceError: b is not defined
let b = 2;
console.log(b);
```
在第一段代碼中,變量a的聲明被提升到了作用域的頂端,因此第一條console語句輸出undefined;而在第二段代碼中,因為b聲明的是let,而let聲明不存在變量提升,所以第一條console語句就會報錯。
3. 事件綁定
在JS中,事件可以通過給DOM元素綁定事件來實現,常用的事件有click、mouseover、mouseout等。例如:
``````
這段代碼中,首先獲取了一個id為btn的按鈕元素,然后對按鈕使用addEventListener方法,當按鈕被點擊時會觸發回調函數。該方法的兩個參數分別為事件類型和事件觸發時執行的函數。
4. 面向對象編程
在JS中,可以通過構造函數來創建對象,也可以使用ES6中新增的class關鍵字創建。下面我們先來看構造函數:
```
function Student(name, age) {
this.name = name;
this.age = age;
this.sayHi = function() {
console.log('Hi, 我是' + this.name + ',今年' + this.age + '歲了');
};
}
let stu1 = new Student('小明', 20);
stu1.sayHi();
```
這段代碼中,定義了一個Student構造函數,它有兩個參數name和age,分別代表學生的名字和年齡,然后定義了一個sayHi方法,該方法在被調用時會在控制臺輸出學生的信息。在代碼的最后,我們new了一個stu1對象,并調用了其sayHi方法,控制臺會輸出'Hi, 我是小明,今年20歲了'。
那么使用ES6的class如何創建對象呢?它們實現的方式有點不同:
```
class Student {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHi() {
console.log('Hi, 我是' + this.name + ',今年' + this.age + '歲了');
}
}
let stu1 = new Student('小明', 20);
stu1.sayHi();
```
與構造函數不同,使用class創建類時沒有直接創建方法,而是使用關鍵字constructor來創建類的構造函數。然后,將要綁定的變量們使用this關鍵字進行綁定,并在該函數中定義一個方法。因為方法是放在類的原型中的,所以方法內部不可以使用this綁定到對應實例,因此ES6中Method定義的方法默認會綁定到原型,實例引用。
上一篇css圖片地步對齊
下一篇php mysql統計