国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript函數

v1 / 2596人閱讀

摘要:函數面試考點比較密集參考阮一峰函數我的博客關于作用域變量提升函數提升的個人理解筆記函數的五種聲明方式具名函數聲明一個變量七種數據類型聲明一個函數是個特例不寫自動加上關于返回會在傳入的參數里首先調用方法但是當打印到控制臺的時候沒有寫雙引號是瀏

JavaScript函數

面試考點比較密集
參考阮一峰JavaScript函數
我的博客:關于作用域,變量提升,函數提升的個人理解筆記

1.函數的五種聲明方式 1.1 具名函數

var 聲明一個變量,七種數據類型
function 聲明一個函數,是個特例
不寫return自動加上return undefined

 function f(x,y){
     return x+y
 }
 f.name // "f"

1.1.1 關于console.log()

console.log()返回undefined

console.log()會在傳入的參數里首先調用toString()方法

但是當打印到控制臺的時候,沒有寫雙引號,是chrome瀏覽器的原因

比如可以在重寫console.log()

1.2 匿名函數
 var f
 f = function(x,y){
     return x+y
 }
 f.name // "f"

如果要聲明匿名函數,就一定要把它賦給一個變量

1.3var x = function y(){}
var f
 f = function f2(x,y){ return x+y }
 f.name // "f2"
 console.log(f2) // undefined

直接聲明function y(){}var x = function y(){}的區別


然后刷新頁面


直接報錯,說y沒有定義

區別:

第一種方式可以打印,第二種打印說不存在.
第一種整個外面的區域都可以訪問y,第二種只有函數內部才可以訪問到y.(可以訪問的區域就是綠色圈起來的區域)

1.4 window.Function
window.Function

 var f = new Function("x","y","return x+y")
 f.name // "anonymous"

基本不會用

1.5 箭頭函數

箭頭函數都是匿名函數,沒有名字,就像是匿名函數的簡寫形式

三種

箭頭函數

 var f = (x,y) => {
     return x+y
 }
 var sum = (x,y) => x+y//如果return只有一個,可以省略return和{}
 var n2 = n => n*n//如果參數只有一個,可以省略()

五種方式總結

2.函數的name屬性

所有的函數都有一個name屬性,他是一個字符串

1具名函數
 function f(x,y){
     return x+y
 }
 f.name // "f"
 
2匿名函數
 var f
 f = function(x,y){
     return x+y
 }
 f.name // "f"
 
3具名函數賦值
 var f
 f = function f2(x,y){ return x+y }
 f.name // "f2"
 console.log(f2) // undefined
 
4window.Function
 var f = new Function("x","y","return x+y")
 f.name // "anonymous"
 
5箭頭函數
 var f = (x,y) => {
     return x+y
 }

f.name//"f"
3.函數的本質 3.1函數的調用

調用的英文單詞call
函數在內存中為字符串

3.1.1函數在內存中:


即函數也是一個對象,廣義上

3.1.2 eval()函數

給一個字符串.返回的為:字符串轉化成代碼然后執行."

3.1.3函數就是對象

模擬函數本質

函數是一個對象,里面有參數,函數體,調用方法
f是函數,是對象,f.call()是一個執行函數體的方法

總結

js中有七種數據類型,

number string boolean null undefined
symbol **object**

前六種是簡單類型,object是前6種的各種組合,所以是復雜類型
原型鏈

3.1.4函數的調用:f(1,2)f.call(undefined,1,2)

f(1,2)是簡單用法
f.call(undefined,1,2)才是真實的用法


用call 便于理解this,是硬核技術
call用法:

參數從第二個開始

4.thisarguments

arguments是參數數組

4.1 this

特例:當call()的第一個參數是undefined的時候, thiswindow.

當啟用嚴格模式的時候,call 里的第一個參數是什么,this 就是什么

this的作用先不說

4.2 arguments是參數組成的偽數組

偽數組:里面有0123這些次序,也有length,長得像數組,但是.偽數組的__proto__沒有指向的是 Array.prototype,或者說原型鏈中沒有Array.prototype,即原型鏈中沒有和Array.prototype有關的 ,也就是說只是一個像數組的對象而已.

沒有 push

5 call stack 調用棧

每進入一個函數,就在棧里記錄一個記號,當調用完之后return的時候,就跳到做的記號哪里,彈出棧里的記號

調用演示:
普通調用
嵌套調用
遞歸調用

5.1 Stack Overflow錯誤

堆棧溢出

超出call stack調用棧

segment fault也是一種錯誤,c語言里面的
6. 作用域

什么情況下直接使用 a=1 會使a直接變成全局變量(window.a)?
當寫a=1這個代碼的時候,首先計算機會認為這是賦值,當發現當前作用域沒有聲明a的時候,就繼續往上找,看看上一層的作用域有沒有聲明a,就這樣,一直找到window層即全局作用域層,就直接給全局變量window自動聲明一個a.
就近原則,哪一個scope離賦值最近,賦值的就是哪一個作用域
我的博客:關于作用域,變量提升,函數提升的個人理解筆記

這個f4里面的a只能是他自己本身的作用與和他的父作用域,跟f1里面的a沒有關系

f4打印出來的a是1


所有的代碼解析完畢,這時候i已經是6.
所以當點擊的時候,已經是解析完畢后的i,點擊的時候就是執行最開始綁定過的函數,點擊相當于在最后寫下執行函數的代碼,這時候i已經是6了,所以打印出來的是6.for循環結束之后就是6.

liTags[i].onclick = function(){
     console.log(i)
}//在這里只是聲明函數,并沒有調用,運行這段代碼只會解析代碼,不會運行函數
//當點擊事件發生的時候,就相當于調用這個函數,當調用的時候,已經被解析成6了點擊速度不可能超過解析速度

同理,下面代碼打印出的是6

閉包定義

題目



特例:當call()的第一個參數是undefined的時候, thiswindow.

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/95278.html

相關文章

  • JavaScript專題系列文章

    摘要:專題系列共計篇,主要研究日常開發中一些功能點的實現,比如防抖節流去重類型判斷拷貝最值扁平柯里遞歸亂序排序等,特點是研究專題之函數組合專題系列第十六篇,講解函數組合,并且使用柯里化和函數組合實現模式需求我們需要寫一個函數,輸入,返回。 JavaScript 專題之從零實現 jQuery 的 extend JavaScritp 專題系列第七篇,講解如何從零實現一個 jQuery 的 ext...

    Maxiye 評論0 收藏0
  • JS程序

    摘要:設計模式是以面向對象編程為基礎的,的面向對象編程和傳統的的面向對象編程有些差別,這讓我一開始接觸的時候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續了解設計模式必須要先搞懂面向對象編程,否則只會讓你自己更痛苦。 JavaScript 中的構造函數 學習總結。知識只有分享才有存在的意義。 是時候替換你的 for 循環大法了~ 《小分享》JavaScript中數組的那些迭代方法~ ...

    melody_lql 評論0 收藏0
  • JavaScript深入淺出

    摘要:理解的函數基礎要搞好深入淺出原型使用原型模型,雖然這經常被當作缺點提及,但是只要善于運用,其實基于原型的繼承模型比傳統的類繼承還要強大。中文指南基本操作指南二繼續熟悉的幾對方法,包括,,。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 怎樣使用 this 因為本人屬于偽前端,因此文中只看懂了 8 成左右,希望能夠給大家帶來幫助....(據說是阿里的前端妹子寫的) this 的值到底...

    blair 評論0 收藏0
  • 10分鐘了解Javascript-天碼營

    摘要:然后將構造函數的原型設為,便實現了對象繼承。首先,我們定義一個構造函數,并在其中定義一個局部變量。這里的是局部變量,其作用域仍然存在是閉包現象,而非對象屬性。 Javascript是動態的,弱類型的,解釋執行的程序設計語言。 Javascript極其靈活,支持多種程序設計范式:面向對象、指令式、函數式。JavaSCript最初被用于瀏覽器腳本,現在已經是所有主流瀏覽器的默認腳本語言。瀏...

    trigkit4 評論0 收藏0
  • 學習React之前你需要知道的的JavaScript基礎知識

    摘要:和類在開始時遇到類組件,只是需要有關類的基礎。畢竟,中的條件呈現僅再次顯示大多數是而不是特定的任何內容。 在我的研討會期間,更多的材料是關于JavaScript而不是React。其中大部分歸結為JavaScript ES6以及功能和語法,但也包括三元運算符,語言中的簡寫版本,此對象,JavaScript內置函數(map,reduce,filter)或更常識性的概念,如:可組合性,可重用...

    bitkylin 評論0 收藏0

發表評論

0條評論

v1

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<