JavaScript學習筆記(陣列、物件、函式)
阿新 • • 發佈:2022-03-10
最近在寫一些簡單的前端頁面,用到了JS這裡記錄一下:(本人主開發語言是python所以寫一些和python不同的地方)
JS的for迴圈
<script> var list1 = ['a','b','c'] for (var x in list1){ console.log(x) console.log('============') console.log(list1[x]) } </script>
console.log(x) 列印的是列表的索引(0,1,2), 我們需要再使用list1[x]才能獲取元素
for ... of
迴圈則完全修復了這些問題
console.log(list1.length) 給列表長度賦值能修改列表的長度
JS列表切片:list1.slice(0,2),就算索引超出也不會報錯 :list1.slice(0,10000)
JS列表新增元素:list1.push('A')
列表排序:list1.sort()
列表反轉:list1.reverse()
列表中的元素連結成字串:list1.join('-'),不會修改列表本身而是生成一個新的字串
JS中的字典(物件)
var dict_ = {'name':'fjx',age:18} console.log(dict_.name) console.log(dict_.age)
JS中的字典允許key不用帶引號,也是無序的
通過dict_.name 或者dict_['name']來訪問
for迴圈的是字典的key ,for迴圈的時候不能使用 dict_.x 這種語法,必須使用dict_[x]
如果我們要檢測是否擁有某一屬性,可以用in
操作符:
定義函式:
function test(x) { if(x > 0){ return x; } else { return -x; } }
是一個匿名函式,它沒有函式名。但是,這個匿名函式賦值給了變數fun
,所以,通過變數fun
就可以呼叫該函式。 var fun = function (x) { if(x >0){ return x; }else { return -x } }
箭頭函式:箭頭函式表示式的語法比函式表示式更簡潔,並且沒有自己的this
,arguments
,super
或new.target
。箭頭函式不會建立自己的this
,所以它沒有自己的this
,它只會從自己的作用域鏈的上一層繼承this
。
箭頭函式沒有自己的this
,它會捕獲自己在定義時(注意,是定義時,不是呼叫時)所處的外層執行環境的this
,並繼承這個this
值。所以,箭頭函式中this
的指向在它被定義的時候就已經確定了,之後永遠不會改變。
箭頭函式表示式更適用於那些本來需要匿名函式的地方,並且它不能用作建構函式。
(param1, param2, …, paramN) => { statements } // 當只有一個引數時,圓括號是可選的: (singleParam) => { statements } singleParam => { statements } // 沒有引數的函式應該寫成一對圓括號。 () => { statements }
我在vue中使用axios的時候就用到了箭頭函式,如果不用箭頭函式,採用普通函式這個時候this就不是vue物件了
var vm = new Vue({ el:"#neirong", data(){ return{ task_name: 'test', selected: 'test', pro_list:[], feat_list:null, features:[], node_list:[], nodes:'', data:{} } }, methods:{ taskfun(){ //請求後臺傳送測試資料 console.log(JSON.stringify(this._data)) var vue_data_url = 'http://0.0.0.0:8000/vue_data' axios.post(vue_data_url, JSON.stringify(this._data),{ headers: { 'Content-Type': 'application/json'} }) .then(response =>{ //這裡必須使用箭頭函式才能獲取到vue的this,使用箭頭函式的時候需要靈活運用, this.data = response.data.data console.log(this.data) var build_job_url = 'http://0.0.0.0:8000/build_job' axios.post(build_job_url, this.data) .then(response => { for (var x in response.data.data){ if (response.data.data[x] == ''){ continue } alert(response.data.data[x]) }} ) } ) alert() } },