1. 程式人生 > 其它 >2021-1-22今日一練

2021-1-22今日一練

技術標籤:個人筆記前端學習javascript

1.js陣列方法

var arr=['apple','orange','banana'];

1.toString()
把陣列轉換成陣列值的字串

console.log(arr.toString());//apple,orange,banana

2.join()
所有陣列元素結合為一個字串,跟toString()相似,但可以規定分隔符

console.log(arr.join("*"));//apple*orange*banana

3.pop()
從陣列中刪除最後一個元素

arr.pop();
document.getElementById
("arr").innerHTML=arr;

在這裡插入圖片描述
4.push()
在陣列結尾處)向陣列新增一個新的元素

arr.push("addEle");
document.getElementById("arr").innerHTML=arr;
var x=arr.push();//x=5

在這裡插入圖片描述
5.splice()

  • 向陣列新增新項
//第一個引數是新增新項的下標,從0開始,第二個引數是應刪除下標後的幾個元素,後面引數可寫多個為新增的新項
arr.splice(2,0,"addEle");
document.getElementById
("arr").innerHTML=arr;
  • 刪除元素
//第一個引數是定義新元素應該被新增的位置,第二個引數是刪除多少個元素
arr.splice(0,2);
document.getElementById("arr").innerHTML=arr;

6.concat()
通過合併(連線)現有陣列來建立一個新陣列

arr2=['aaa','bbb','ccc'];
document.getElementById("arr").innerHTML=arr.concat(arr2);

在這裡插入圖片描述
7.slice()

  • 用陣列的某個片段切出新陣列
document.
getElementById("arr").innerHTML=arr.slice(1);//

在這裡插入圖片描述

  • 可接受兩個引數,比如 (1, 3):從開始引數選取元素,直到結束引數(不包括)為止
var arr=['apple','orange','banana','aaaa'];
document.getElementById("arr").innerHTML=arr.slice(1,3);//

在這裡插入圖片描述
會改變陣列的方法:
push()
pop()
shift()
splice()
sort()
reverse()
forEach()
不會改變陣列的方法:
filter()
concat()
slice()
map()

判斷是否為陣列型別:

  • Array.isArray()
console.log(Array.isArray(陣列名))
  • instanceof
陣列名 instanceof Array
  • Object.prototype.toString()

2.this的工作原理

1.在全域性範圍內,this指向全域性物件(window)
2.物件呼叫時,就指向當前物件
3.全域性函式呼叫時,指向window物件
4.使用new例項化物件時,this指向新建立的物件

3.javascript中實現跨域的方法

1.jsonp請求
2.document.domain
3.window.name
4.window.postMassage
5.CORS
6.Web Sockets

4.js解析順序

var foo=function(x,y){//匿名函式:賦值式函式  foo2
	return x-y;
}
function foo(x,y){//具名函式:宣告式函式,函式宣告 foo1
	return x+y;
}
var num=foo(1,2);
document.getElementById("arr").innerHTML=num;//-1
  • 變數宣告、函式宣告都會被提升到作用域頂處
  • 當出現相同名稱時,優先順序為:變數宣告< 函式宣告(foo1) < 變數賦值(foo2)
順序為:
var num;
var foo;
foo1
foo2

5.javascript非同步模式

同步模式

  • 後一個任務等待前一個任務結束,然後再執行,程式的執行順序與任務的排列順序是一致的、同步的

非同步模式

  • 每一個任務有一個或多個回撥函式(callback),前一個任務結束後,不是執行後一個任務,而是執行回撥函式,後一個任務則是不等前一個任務結束就執行,所以程式的執行順序與任務的排列順序是不一致的、非同步的

實現非同步程式設計模式的方法:
1.回撥函式
這是非同步程式設計最基本的方法

優點缺點
簡單、容易理解和部署不利於程式碼的閱讀和維護,各個部分之間高度耦合,流程會很混亂,而且每個任務只能指定一個回撥函式

2.事件監聽
任務的執行不取決於程式碼的順序,而取決於某個事件是否發生

優點缺點
比較容易理解,可以繫結多個事件,每個事件可以指定多個回撥函式,而且可以”去耦合”有利於實現模組化整個程式都要變成事件驅動型,執行流程會變得很不清晰

3.釋出/訂閱

4.Promises物件

本博文僅供本人筆記使用,不妥請聯絡刪除