国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 龙游县| 大余县| 泸定县| 金阳县| 苏尼特右旗| 库伦旗| 科技| 高阳县| 修水县| 湖州市| 新野县| 商丘市| 西丰县| 大埔区| 女性| 开远市| 镇平县| 许昌市| 宿州市| 屏边| 清新县| 调兵山市| 上蔡县| 镇宁| 房产| 通辽市| 新和县| 黔南| 中江县| 沅陵县| 务川| 巴青县| 宁南县| 庆城县| 北流市| 崇阳县| 民县| 凯里市| 河北省| 河北省| 巴马|