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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript中函数的全解简介

發(fā)布時間:2024/4/11 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript中函数的全解简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

來源:itelite

<script? language="javascript">
//切記特殊的兩種函數(shù)聲明方式
/*
//Function 構(gòu)造
var f=new Function("x","document.write(x);");
?f(2);

?//函數(shù)直接量
?var g=function(y)
?{
?alert("I am the Function g().");
?}
?g();???
*/
function Rectangle_area(){return this.width*this.height;}
function Rectangle_perimeter(){return 2*(this.width+this.height);}
function Rectangle_set_size(w,h){this.width=w;this.heigh=h;}
function Rectangle_enlarge(){this.width*=2;this.height*=2;}
function Rectangle_shrink(){this.width/=2;this.height/=2;}
//初學(xué)javascript中的面向?qū)ο蟮木幊谭绞?br />//構(gòu)造Retangle對象定義一個構(gòu)造函數(shù)方法
//構(gòu)造函數(shù)不僅要初始化屬性,還給方法賦值
function Rectangle(w,h)
{
?//初始化對象的屬性
?this.width=w;
?this.height=h;
?//定義對象的方法
?this.area=Rectangle_area;
?this.perimeter=Rectangle_perimeter;
?this.set_size=Rectangle_set_size;
?this.enlarge=Rectangle_enlarge;
?this.shrink=Rectangle_shrink;
}
var r=new Rectangle(3,4);
var a=r.area();
r.enlarge();
var p=r.perimeter();
document.write("The rectangle's width is :"+r.width+"<br />This rectangle'height is :"+r.height);
//alert("The rectangle's area is :"+a+",The rectangle'perimeter is :"+p);


/*
自定義異常錯誤!
throw new Error("there is something wrong!");

*/

/*
直接函數(shù)的更多應(yīng)用
直接函數(shù)和Function構(gòu)造函數(shù)一樣,函數(shù)直接兩創(chuàng)建的是未命名函數(shù),而且不會自動地將這個函數(shù)存儲在
屬性中。但是,比起Function函數(shù)構(gòu)造創(chuàng)建的函數(shù)主體必須用一個字符串說明,用這種方式來表達一個長
而復(fù)雜的函數(shù)是很笨拙的。但是函數(shù)直接量的主體使用的卻是標準的javascript語法。而且函數(shù)直接量植被
解析和編譯一次,而作為字符串傳遞給Function構(gòu)造函數(shù)的javascript代碼則在每次調(diào)用構(gòu)造函數(shù)時只需
被解析和編譯一次。
*/

//作為數(shù)據(jù)的函數(shù)實例
function add(x,y){return? x+y;}
function subtract(x,y){return x-y;}
function multiply(x,y){return x*y;}
function divide(x,y){return x/y;}
//以下的函數(shù)可以將上面的某個函數(shù)作為參數(shù)
//他的兩個參數(shù)是兩個運算數(shù)。
function operate(operator,operand1,operand2)
{
?return operator(operand1,operand2);
}
//我們可以調(diào)用該函數(shù)
var i=operate(add,2,3);
document.write("<br />operate(add,2,3)的結(jié)果是:"+i);

//看到這里我不禁想到了c#中的委托代理
//這里就給了我們一個生動形象的實例來幫助我們理解委托代理
//C#中的委托代理的目的不就是為了將函數(shù)作為參數(shù)來傳遞
//在javascript中作為數(shù)據(jù)的函數(shù),說白了就是為了實現(xiàn)我們在c#中的委托代理的目標.

var operators=new Object();
operators["add"]=function(x,y){return x+y;}
operators["subtract"]=function(x,y){return x-y;}
operators["multiply"]=function(x,y){return x*y;}
operators["devide"]=function(x,y){return x/y;}
operators["pow"]=Math.pow;

//以下的函數(shù)將運算符名作為參數(shù),在數(shù)組中檢索這個運算符.
//然后對運算數(shù)調(diào)用檢索到的函數(shù)
//注意調(diào)用這個運算符函數(shù)的語法
function operate2(op_name,operand1,operand2)
{
?if (op_name==null)
?{
??return "unknown operator!";
?}
?else
?{
??return operators[op_name](operand1,operand2);
?}
}

//我們就可以使用以下的方式調(diào)用該函數(shù)計算值 ("hello"+" "+"world!")
//var j=opertate2("add","Hello",operate2("add"," ","world!"));
var k=operate2("add","Hello",operate2("add"," ","world!"));
document.write("<br >opertate2('add','Hello',operate2('add','','world!'))的結(jié)果是:"+k);
document.write("<br>operate2('pow'.10,2)的結(jié)果是:"+operate2("pow",10,2));
//個人意見
//這種使用方法實際上就是在javascript中提到的屬性的關(guān)聯(lián)數(shù)組的用法,為我們的編程提供了
//強大的靈活性.

//javascript函數(shù)的主體是在局部作用域中執(zhí)行的,該作用域不同于全局作用域.這個新的作用域
//是通過調(diào)用對象添加到函數(shù)作用域鏈的頭部創(chuàng)建的.因為調(diào)用對象是作用域鏈的一部分,所以
//在函數(shù)體內(nèi)可以把這個調(diào)用對象的德屬性作為變量來訪問.用var語句聲明的局部變量創(chuàng)建后
//作為調(diào)用對象的屬性,而且函數(shù)的形式參數(shù)也可用于調(diào)用對象的屬性.

/*
函數(shù)調(diào)用的實際參數(shù):Arguments對象.
*/
function f(x,y,z)
{
?//首先檢查傳遞參數(shù)的數(shù)量是否正確.
?if (arguments.length!=3)
?{
??throw new Error("Function f called with "+arguments.length+"arguments ,but it expects 3 arguments!");
?}
}
//f(1,2,6,6);

function max()
{
?var m=Number.NEGATIVE_INFINITY;
?//遍歷所有參數(shù),檢索并保存其中最大的參數(shù)
?for (var i=0;i<arguments.length ;i++ )
?{
??if(arguments[i]>m) m=arguments[i];
??document.write("<br />arguments["+i+"]="+arguments[i]);
?}
?return m;
}

var largest=max(1,6,9,100,99,5);
document.write("<br />max(1,6,9,100,99,5)的結(jié)果是:"+largest);
/*
以上的實例中的Arguments對象很容易讓我們認為它是一個數(shù)組,
但我要說明的一點就是這里的arguments不是一個數(shù)組而是一個對象,雖然它也有l(wèi)ength屬性
但我們?nèi)绻阉醋髋既痪哂辛艘恍Ь幋a的屬性的對象更合適些.
*/

//aruments對象還有callee屬性
//用來引用當前正在執(zhí)行的函數(shù).看下面這個求階乘的函數(shù)
var t=function(x)
{
?if(x<=1) return 1;
?return x*arguments.callee(x-1);
}
document.write("<br />5的階乘是:"+t(5));


//函數(shù)的屬性和方法
//知道了arguments數(shù)組的length屬性指定了楚地為該函數(shù)的實際參數(shù)數(shù)目.但是函數(shù)自身的length屬性的含義
//卻非如此,它是只讀的.返回的是函數(shù)需要的實際參數(shù)數(shù)目,也就是在函數(shù)的形式參數(shù)列表中聲明的形式參數(shù)
//的數(shù)目.
function check(args)
{
?var actual=args.length;
?var expected=args.callee.length;
?if (actual!=expected)
?{
??throw new Error("Wrong number of arguments:expected : "+expected +";actually passed? "+actual);
?}
}

function f2(x,y,z)
{
?check(arguments);
?return f2.counter++;
}
//f2(4);
//同時函數(shù)還可以定義自己的屬性
f2.counter=0
document.write("<br />第一次引用f2時的counter屬性:"+f2(1,1,1));?//此時counter=2
document.write("<br />第二次引用f2時的counter屬性:"+f2(1,1,1));?//此時counter=3
//document.write("<br />第三次引用f2時的counter屬性:"+f2.counter);? //此時counter=3
//函數(shù)的apply()和call()方法
//call 和apply方法的第一個參數(shù)都是要調(diào)用的函數(shù)對象,在函數(shù)體內(nèi)這一參數(shù)可以使用this的值,
//call()的剩余參數(shù)是傳遞給要調(diào)用的函數(shù)的值.
//apply()區(qū)別于call()的地方就是apply()的參數(shù)是用數(shù)組來傳遞的
var? d=new Array(1,2,3);
f2.call(f,1,2,3);????????????????????????//此時counter=4
document.write("<br />第三次引用f2時的counter屬性:"+--f2.counter);??
f2.apply(this,d);???????????????????????//此時counter=2
document.write("<br />第四次引用f2時的counter屬性:"+f2.counter);
f.call(f2,1,2,3);????????????????????????//此時counter=2,這里沒有調(diào)用f2
document.write("<br />第五次引用f2時的counter屬性:"+f2.counter);
//以上現(xiàn)象比較怪異,應(yīng)該多想想!
//實際上以上主要在讓我熟悉++的運算
</script>?

轉(zhuǎn)載于:https://www.cnblogs.com/qq419524837/articles/1628121.html

總結(jié)

以上是生活随笔為你收集整理的javascript中函数的全解简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人做爰69片免费 | 中文字幕不卡 | 枫可怜av | 靠逼视频网站 | 国产日韩欧美精品一区二区 | 亚洲日本japanese丝袜 | 欧美日韩www| 国内爆初菊对白视频 | 亚洲午夜久久 | 男女操操 | 99久久精品国产一区二区成人 | 91成人在线 | 男人的天堂在线播放 | 日韩视频一区二区 | 九九日韩 | 成人毛片在线免费观看 | 日本成人在线视频网站 | 国产精品夫妻自拍 | 成人激情视频在线播放 | 91色视频| 欧美四级在线观看 | 丰满人妻一区二区三区四区53 | 国产欧美二区 | 免费视频www在线观看网站 | 欧美一级夜夜爽 | 北条麻纪在线观看aⅴ | 日本久久久久久久久久 | 男女精品视频 | 美女久久| 在线免费日韩av | 久久午夜精品人妻一区二区三区 | 岛国av免费在线 | 久久免费在线 | 国产亚洲精品精品国产亚洲综合 | 国产伦精品一区二区三区视频黑人 | 三年在线观看视频 | 日韩综合精品 | 久久久国产成人 | 在线免费观看高清视频 | 日韩福利小视频 | 成人午夜毛片 | 亚洲五码在线 | 狠狠干在线视频 | 国产一区二区视频在线观看 | 天堂资源站 | 大尺度做爰无遮挡露器官 | 久久久在线视频 | 色撸撸在线| 少妇精品一区二区三区 | 国产又爽又黄游戏 | 国产精品短视频 | 国产成人麻豆精品午夜在线 | 午夜电影一区二区三区 | 曰韩精品 | 午夜aaa片一区二区专区 | 精品国产乱码久久久久久久 | 啪视频在线 | 噼里啪啦动漫高清在线观看 | 日韩免费视频一区二区 | 欧美少妇一级片 | 欧美日韩精品一区二区三区蜜桃 | 91免费看片| 久久久一二三 | 成人黄色网址在线观看 | 亚洲一区二区三区四区五区xx | 激情欧美综合 | 91口爆一区二区三区在线 | 成人午夜精品福利 | 国产无套视频 | 久久成人综合 | 国产成人精品久久二区二区 | 国产成人精品无码免费看81 | 人碰人操| 爱情岛论语亚洲入口 | 久久久精品毛片 | 超级碰在线观看 | 欧美性生活网 | 欧美一区二区最爽乱淫视频免费看 | 激情九九| 激情拍拍拍| 92国产精品| 最新日韩中文字幕 | 久久婷婷久久 | 美女在线一区 | 精品欧美一区二区三区久久久 | 欧洲久久久久 | 成年人看的网站 | 日韩色图一区 | 日日操夜夜骑 | 欧美看片 | 国产在线观看你懂的 | 男生和女生一起差差差很痛的视频 | 午夜精品少妇 | 光棍影院手机版在线观看免费 | 国产在线无码精品 | 99久久久无码国产精品免费 | 1000部国产精品成人观看 | 成av人在线| 看片久久|