亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2016年06月14日 15:27:10   作者:jian,zhou  
本文給大家介紹JavaScript函數(shù)中關(guān)于valueOf和toString的理解,簡單的說就是需要轉(zhuǎn)換為字符串時,會調(diào)用toString,需要轉(zhuǎn)換為數(shù)字時需要調(diào)用valueOf。對js valueof tostring知識感興趣的朋友一起學習吧

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

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

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

實現(xiàn):

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

這個沒有錯的,可以完美解決問題。

優(yōu)化:這里只討論關(guān)于高階函數(shù)的部分,對于更好的解決方案,可以實現(xiàn)無限這種調(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
//方法二、另看到一種很飄逸的寫法(來自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ù)應用了自定義屬性,用于存儲值。
;(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]看到的文章中寫的,對于其中的方法一和方法二 一直不理解,也嘗試在控制臺輸出 [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)換為字符串時,會調(diào)用toString,需要轉(zhuǎn)換為數(shù)字時需要調(diào)用valueOf。

相關(guān)文章

最新評論