1. 程式人生 > 其它 >JavaScript學習筆記(陣列、物件、函式)

JavaScript學習筆記(陣列、物件、函式)

最近在寫一些簡單的前端頁面,用到了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 } }

箭頭函式:箭頭函式表示式的語法比函式表示式更簡潔,並且沒有自己的thisargumentssupernew.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()
                }
            },