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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

5.5 function

發布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5.5 function 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實例

function sum(num1, num2){return num1 + num2; }//函數表達式 var sum = function(num1, num2){return num1 + num2; }

函數名是指向函數的指針,一個函數可能有多個名字

function sum1(num1, num2){return num1 + num2; }alert(sum1(1, 2));//3var anotherSum = sum1; l(anotherSum(10,10));//20 sum1 = null; l(anotherSum(10,10));//20

5.5.1 沒有重載(深入理解)
將函數名想象成指針

function addSomeNumber(num){return num + 100; } function addSomeNumber(num){return num + 200; } addSomeNumber(100)//300var addSomeNumber = function(num){return num + 100; }addSomeNumber = function(num){return num + 200; } addSomeNumber(100);//300 創建第二個函數的時候,覆蓋了引用第一個函數的變量addSomeNumber

5.5.2 函數聲明與函數表達式
解析器解析的時候不是一視同仁:先讀取函數聲明,函數表達式要等解析器執行到它所在的代碼行。

alert(sum1(10, 10));//20 function sum1(num1, num2){return num1 + num2; } ===== alert(sum1(10, 10));//sum1 is not a function var sum1 = function(num1,num2){return num1 + num2; }

5.5.3 作為值的函數

function callSomeFunction(someFunction, someArgument){return someFunction(someArgument); } function callSomeFunction(someFunction, someArgument){return someFunction(someArgument); } function add10(num){return num + 10; }var result = callSomeFunction(add10, 10); l(result);//20function getGreeting(name){return 'hello ' + name; } var result2 = callSomeFunction(getGreeting, 'cjw'); l(result2);//hello cjw function createComparisonFunction(propertyName){return function(object1, object2){var value1 = object1[propertyName];var value2 = object2[propertyName];if(value1 < value2){return -1;}else if (value1 > value2){return 1;}else{return 0;}} }var data = [{name:'Zachary',age:228},{name:'Nicholas',age:29}]; data.sort(createComparisonFunction('name')); l(data[0]); data.sort(createComparisonFunction('age')); l(data[0]);

5.5.4 函數內部屬性 arguments,this
arguments: 一個類數組對象包含傳入函數的所有參數
arguments.callee: 指向擁有這個arguments對象的函數
this: 引用的是函數據以執行的環境對象
caller: 這個屬性中保存著調用當前函數的函數的引用。

function factorial(num){if(num <= 1){return 1;}else{return num * factorial(num-1);} }l(factorial(5)); //不受函數名限制 function factorial(num){if(num <= 1){return 1;}else{return num * arguments.callee(num - 1);} }

this

window.color = 'red'; var o = {color:'blue'}; function sayColor(){l(this.color) } sayColor();//redo.sayColor = sayColor; o.sayColor();//blue

caller

function outer(){inner(); }function inner(){l(inner.caller);//? outer(){inner();} }outer();function outer(){inner(); }function inner(){l(arguments.callee.caller); } outer();

5.5.5 函數屬性和方法(length,prototype, call,apply,bind)
length: 希望接受的命名參數的個數
prototype:保存所有實例方法的真正所在
call,apply: 擴充函數賴以運行的作用域
apply: 運行函數的作用域,接收數組
call:運行函數的作用域,接收參數
length

function sayName(name){l(name); } function sum1(num1, num2){return num1 + num2; } function sayHi(){l('hi'); } l(sayName.length);//1 l(sum1.length);//2 l(sayHi.length);//0

apply,call

function sum1(num1, num2){return num1 + num2; } function callSum1(num1, num2){return sum1.apply(this, arguments); } function callSum2(num1, num2){return sum1.apply(this, [num1,num2]); } function callSum3(num1, num2){return sum1.call(this, num1, num2); } l(callSum1(10, 10));//20 l(callSum2(10, 10));//20 l(callSum3(10, 10));//20

擴充函數賴以生存的作用域

window.color = 'red'; var o = {color: 'blue'}; function sayColor(){l(this.color); } sayColor();sayColor.call(this);//red sayColor.call(window);//red sayColor.call(o);//blue

bind:創建一個函數的實例,其this值會被綁定到傳給bind()函數的值

window.color = "red";var o = {color:"blue"}; function sayColor(){l(this.color); } var objSayColor = sayColor.bind(o); objSayColor();//blue

轉載于:https://www.cnblogs.com/caijw/p/8150938.html

總結

以上是生活随笔為你收集整理的5.5 function的全部內容,希望文章能夠幫你解決所遇到的問題。

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