js中基礎之函式中的this和箭頭函式

2021-10-20 23:52:46 字數 2385 閱讀 3501

變數和常量

js中使用const宣告乙個常量

constpi=

3.14

使用var 和 let宣告變數

var a =1;

let b =

2;

那麼使用let和var宣告變數有什麼區別呢?

js中的this

先來看乙個物件中的乙個方法:

var xiaoming =};

xiaoming.

age();

// 25

在乙個方法內部,this是乙個特殊變數,它始終指向當前物件。現在我們將上邊的方法單獨拎出來,作為乙個函式。

function

getage()

var xiaoming =

;xiaoming.age;

// nan

納尼?發生了什麼?分析帝分析一波:

首先呼叫乙個函式,只是獲取這個函式的返回值,函式體內部的實現並不能在呼叫的地方體現。所以,在xiaoming這個物件呼叫getage()的方法的時候,getage()方法裡面的this並不是指向xiaoming這個物件,而是全域性window。所以執行結果並不能獲取我們想要的。js為了讓這個誤區顯露出來,嚴格模式下執行,會直接提示乙個錯誤。

'use strict'

;function

getage()

var xiaoming =

;xiaoming.age;

// uncaught typeerror: cannot read property 'birth' of undefined

嚴格模式下,全域性函式中的this指向了undefined,不使用嚴格模式,則會指向window

講函式的時候,我們提到,如果不加() ,我們會獲取這個函式的函式體。如果不加(),可不可以得到我們想要的結果呢?

function

getage()

var xiaoming =

;xiaoming.

age();

// 25

事實證明可以。

但是如果,這個函式是物件內部方法之中定義的呢,會發生什麼?

'use strict'

var xiaoming =}}

;xiaoming.

age();

// uncaught typeerror: cannot read property 'birth' of undefined

無情報錯。

有沒有解決辦法呢?我們嘗試用別的變數代替this。

var xiaoming =}}

;xiaoming.

age();

// 25

我們用that先獲取this,這個節點this指向的是xiaoming物件,所以避免了在函式內部this指向錯誤的問題。

'use strict'

var xiaoming =

return getage.

(xiaoming,

);}}

;xiaoming.

age();

// 25

'use strict'

;var count =0;

var oldparseint = parseint;

// 儲存原函式

window.

parseint

=function()

;

箭頭函式

箭頭函式相當於簡寫的匿名函式。

// 單引數

x => x * x

// 多引數

(x, y)

=> x * x + y * y

// 空引數()

=>

newdate()

.getfullyear()

// 因為花括號在js中的特殊性,返回物件需要用()包起來

x =>()

// 將箭頭函式賦值給變數

varfunc

=(x, y)

=> x * x + y * y

箭頭函式中的this總是指向詞法作用域,解決了this的指向問題。

var xiaoming =};

xiaoming .

age();

// 25

JS中函式的基礎知識

函式 一 函式定義 函式又叫方法,在程式裡面函式是用來執行某些特定功能的 為了減少重複使用 可以把特定功能的 做成函式,需要使用時拿出來呼叫。alert 就是乙個很常見的 簡單的函式,重複使用時不需要再寫 了,只是把函式名拿過來用就可以。函式後面都帶 不帶 的一般都是屬性。函式有以下4個特點 1.返...

js基礎中的基礎

昨天看了下js很基礎的東西,這裡大致做了點筆記,想if判斷和迴圈這些就沒有記筆記了,因為感覺都是差不多的。在js中宣告變數和變數的宣告週期 在js中宣告在函式外的變數是全域性變數,也就是在整個程式裡有效,而在函式中宣告的變數是區域性變數,只在此函式中有效,但是還是有一點要注意的就是如果在函式中宣告變...

js中的this基礎

this在js中的地位可以說是相當高了,本文介紹下this的基本相關情況,以後還會慢慢介紹 在頁面中aler this this的指向是window 在dom操作中this的指向是當前發生事件的物件 window.onload function ali i onmouseout function 但...