国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

JavaScript函數(shù)中關(guān)于valueOf和toString的理解

2019-11-20 09:42:01
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

今天看到一個(gè)試題,實(shí)現(xiàn)如下語(yǔ)法的功能:

var a = add(2)(3)(4); //9 

這個(gè)就是一個(gè)高階函數(shù)的應(yīng)用,分析:add(2)會(huì)返回一個(gè)函數(shù),add(2)(3)也會(huì)返回一個(gè)函數(shù),最后add(2)(3)(4)返回一個(gè)數(shù)值。

實(shí)現(xiàn):

function add(num1){return function(num2){return function(num3){return num1+num2+num3;}}}add(2)(3)(4);//9 

這個(gè)沒(méi)有錯(cuò)的,可以完美解決問(wèn)題。

優(yōu)化:這里只討論關(guān)于高階函數(shù)的部分,對(duì)于更好的解決方案,可以實(shí)現(xiàn)無(wú)限這種調(diào)用,

//方法一function add(a) {var temp = function(b) {return add(a + b);}temp.valueOf = temp.toString = function() {return a;};return temp;}add(2)(3)(4)(5);//14//方法二、另看到一種很飄逸的寫(xiě)法(來(lái)自Gaubee):function add(num){num += ~~add;add.num = num;return add;}add.valueOf = add.toString = function(){return add.num};var a= add(3)(4)(5)(6); // 18//方法二注釋:其實(shí)就相當(dāng)于,只不過(guò)對(duì)函數(shù)應(yīng)用了自定義屬性,用于存儲(chǔ)值。;(function(){var sum=0;function add(num){sum+=num;return add;}add.valueOf=add.toString=function(){return sum;}window.add=add;})()var a= add(3)(4)(5)(6); // 18[/code]

這是我在[url=http://www.cnblogs.com/wengxuesong/p/5577683.html]博客園[/url]看到的文章中寫(xiě)的,對(duì)于其中的方法一和方法二 一直不理解,也嘗試在控制臺(tái)輸出 [code=javascript,javascript 代碼,true]function 9

var temp = function() {}temp.valueOf = function() {return 2;}temp.toString = function() {return 'hahh';}alert(temp);console.log(2 * temp); 

需要轉(zhuǎn)換為字符串時(shí),會(huì)調(diào)用toString,需要轉(zhuǎn)換為數(shù)字時(shí)需要調(diào)用valueOf。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中超| 抚宁县| 肥西县| 湖州市| 定南县| 安新县| 托克逊县| 五指山市| 固阳县| 东阳市| 富锦市| 惠水县| 邮箱| 收藏| 青海省| 五家渠市| 东宁县| 江门市| 土默特左旗| 游戏| 西平县| 定远县| 永城市| 柞水县| 湖州市| 竹溪县| 皋兰县| 泸定县| 甘德县| 军事| 嘉定区| 五家渠市| 南投市| 饶平县| 正蓝旗| 团风县| 大兴区| 克拉玛依市| 勃利县| 章丘市| 视频|