日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

es6(五):函数的扩展

發布時間:2023/12/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 es6(五):函数的扩展 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數參數的默認值

function log(x, y = 'World') {console.log(x, y); }log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hellofunction Point(x = 0, y = 0) {this.x = x;this.y = y; }var p = new Point(); p // { x: 0, y: 0 }

函數length 的屬性

指定了默認值以后,函數的length屬性,將返回沒有指定默認值的參數個數。也就是說,指定了默認值后,length屬性將失真。

(function (a) {}).length // 1 (function (a = 5) {}).length // 0 (function (a, b, c = 5) {}).length // 2

如果設置了默認值的參數不是尾參數,那么length屬性也不再計入后面的參數了

(function (a = 0, b, c) {}).length // 0 (function (a, b = 1, c) {}).length // 1

作用域

var x = 1;function f(x, y = x) {console.log(y); }f(2) // 2

上面代碼中,參數y的默認值等于x。調用時,由于函數作用域內部的變量x已經生成,所以y等于參數x,而不是全局變量x。

let x = 1;function f(y = x) {let x = 2;console.log(y); }f() // 1

上面代碼中,函數調用時,y的默認值變量x尚未在函數內部生成,所以x指向全局變量。

應用

利用參數默認值,可以指定某一個參數不得省略,如果省略就拋出一個錯誤。

function throwIfMissing() {throw new Error('Missing parameter'); }function foo(mustBeProvided = throwIfMissing()) {return mustBeProvided; }foo();

rest參數

function add(...values) {let sum = 0;for (var val of values) {sum += val;}return sum; }add(2, 5, 3) // 10 // arguments變量的寫法 function sortNumbers() {return Array.prototype.slice.call(arguments).sort(); }// rest參數的寫法 const sortNumbers = (...numbers) => numbers.sort(); function push(array, ...items) {items.forEach(function(item) {array.push(item);console.log(item);}); }var a = []; push(a, 1, 2, 3)

函數的length屬性,不包括rest參數。

(function(a) {}).length // 1 (function(...a) {}).length // 0 (function(a, ...b) {}).length // 1

擴展運算符

function push(array, ...items) {array.push(...items); }function add(x, y) {return x + y; }var numbers = [4, 38]; add(...numbers) // 42

替代數組的apply方法

// ES5的寫法 function f(x, y, z) {// ... } var args = [0, 1, 2]; f.apply(null, args);// ES6的寫法 function f(x, y, z) {// ... } var args = [0, 1, 2]; f(...args); // ES5的寫法 Math.max.apply(null, [14, 3, 77])// ES6的寫法 Math.max(...[14, 3, 77])// 等同于 Math.max(14, 3, 77); // ES5的寫法 var arr1 = [0, 1, 2]; var arr2 = [3, 4, 5]; Array.prototype.push.apply(arr1, arr2);// ES6的寫法 var arr1 = [0, 1, 2]; var arr2 = [3, 4, 5]; arr1.push(...arr2);

合并數組

// ES5 [1, 2].concat(more) // ES6 [1, 2, ...more]var arr1 = ['a', 'b']; var arr2 = ['c']; var arr3 = ['d', 'e'];// ES5的合并數組 arr1.concat(arr2, arr3); // [ 'a', 'b', 'c', 'd', 'e' ]// ES6的合并數組 [...arr1, ...arr2, ...arr3] // [ 'a', 'b', 'c', 'd', 'e' ]

實現了Iterator接口的對象

var nodeList = document.querySelectorAll('div'); var array = [...nodeList];

箭頭函數

var f = v => v;

等同于

var f = function(v) {return v; };

尾調用,尾遞歸

總結

以上是生活随笔為你收集整理的es6(五):函数的扩展的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。