一、不帶圓括號的函數名訪問的是函數指針,而非調用函數
function sum(num1,num2){ return num1+num2; } console.log(sum(10,10));//20 console.log(sum); //function sum(num1, num2) console.log(sum()); //NaN var anotherSum=sum; console.log(anotherSum(10,10));//20 sum=null; //使得sum()函數的指針為空 console.log(anotherSum(10,10));//20 console.log(sum(10,10));//uncaught TypeError: sum is not a function二、ECMAScript 沒有函數重載的概念
三、函數申明與函數表達式的區別---函數申明會被解釋器預先讀?。╢unction declaration hoisting)雖然函數名可以理解為指針,但是ECMAScript 沒有函數重載的概念 如果申明了同名的函數,則按順序,后面的函數覆蓋掉前面的函數
alert(sum(10,10));//20;因為預先讀取到了sum()函數的申明 alert(sum1(10,10))//報錯,因為找不到sum1()函數; function sum(num1,num2){ return num1+num2; } var sum1=function(num1,num2){ return num1+num2; }四、var sum=function( ){...} 和 sum=function( ){....}的區別?
五、在函數內部有兩個特殊的對象:arguments 和 this和變量的定義是相似的,缺少 var 關鍵字,定義的就是全局變量。 但是這兩種寫法都是函數的表達式寫法。
arguments 是一個數組,主要作用是保存函數參數-----所以javascript函數不在乎傳進來什么類型的參數,也不在乎傳進來幾個參數.
作用一:可以直接利用數組訪問參數 ,如arguments[0];
作用二:在遞歸函數中的應用--------arguments.callee();
這里重點說明一下arguments.callee();它相當于FunctionaName( )
function factorial(num){ if (num<=1){ return 1; }else{ return num*arguments.callee(num-1); } }
不用 return num*factorial( num-1);的目的就是擔心函數名在發生變化,程序會出錯 這叫消除緊密耦合現象
六、函數的兩個屬性和方法每個函數都包含length 和prototype 屬性
length用法: FunctionName.length 可以得到函數當前傳入的參數個數
prototype用法:函數的原型屬性,很多函數的方法依托于這個屬性,也是實現函數繼承的重要因素
每個函數都包含非繼承來的兩個方法:apply( )和call( );
主要的意義在于:(1)傳遞函數參數(2)擴充函數的作用域
舉個栗子:
//apply()和call()擴充函數作用域,功能:在特定的作用域中調用函數
window.color="red"; var object={ color:"blue"} function sayColor(){ alert(this.color); } sayColor();//red--函數內部作用域中沒有color屬性,便利用函數作用域鏈向上找到全局window.color="red" sayColor.call(this);//red--調用函數內部作用于,找color,沒找到便向上查找找到全局window.color="red" sayColor.call(object);//blue--函數體內部this指針指向object,所以找到 color:"blue" sayColor.call(window);//red--同理找到全局作用域window.color="red"七、涉及到的專業術語
function declaration hoisting (函數申明提升) 避免函數的緊密耦合
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85733.html
摘要:用對象字面量形式創建的對象,直接賦值給函數的原型對象,本質上完全重寫了其對象,因此屬性也就變成了新對象的屬性指向構造函數,不再指向函數。 【上一篇】:JavaScript對象內部屬性及其特性總結 showImg(https://segmentfault.com/img/bVbjYsc?w=839&h=489); 工廠模式(★★) 先在內部顯示地創建一個臨時對象,根據接收的參數來構建(賦...
摘要:對象包含下列屬性返回整條規則對應的文本包括選擇符和花括號返回當前規則的選擇符一個對象返回規則中所有的樣式當前規則所屬的樣式表表示規則類型的常量值。從文檔中分離解除引用推薦在使用完范圍后再執行上述兩個步驟。 DOM1級主要定義了HTML和XML文檔的底層結構,DOM2和DOM3則在DOM1的基礎上引入了更多的交互功能,支持了更高級的XML特性。DOM2和DOM3分為許多模塊(模塊之間具...
摘要:中提供了一個和的模塊可以用來做格式化日期和時間的。格式化日期通過模塊中方法來格式化日期函數接收時間元組并返回以可讀字符串表示薪資的時間格式的話由參數決定。每日寬度間隔為字符每行的長度為是每星期的行數。 我們可以通過學習在Python中對日期時間的處理,可以在快速的完成工作,比如: 將日期時間作為日志信息的內容輸入 計算某一個功能的執行時間 用日期命名一個文件的名稱 記錄或者展示文件的...
摘要:背景訂票網站韻動株洲游泳館訂票網站訂票規則用戶當天,預約第二日免費游泳公益券領取資格,每位用戶每天只能預訂一張如有余票當天也可預訂。 前言 暑假閑來無事,每天上午的寶貴時間想去游泳,減減肚子,練練耐力,正好我們那個地方游泳館上午提供免費的票,但是,需要前一天早上七點開始預定第二天上午的免費游泳票。往年暑假,我是每天早上六點五十五準時起床,眼睛半睜不睜的等著七點一到,立馬搶票!搶完一臉解...
閱讀 1207·2019-08-30 15:55
閱讀 954·2019-08-30 15:55
閱讀 2150·2019-08-30 15:44
閱讀 2879·2019-08-29 14:17
閱讀 1130·2019-08-29 12:45
閱讀 3301·2019-08-26 10:48
閱讀 3133·2019-08-23 18:18
閱讀 2599·2019-08-23 16:47