函式、函式作用域、this、建構函式
1.函式
- 返回值,就是函式執行的結果。 - 使用return 來設定函式的返回值。 - 語法:return 值; - 該值就會成為函式的返回值,可以通過一個變數來接收返回值 - return後邊的程式碼都不會執行,一旦執行到return語句時,函式將會立刻退出。 - return後可以跟任意型別的值,可以是基本資料型別,也可以是一個物件。 - 如果return後不跟值,或者是不寫return則函式預設返回undefined。 - break、continue和return - break - 退出迴圈 - continue - 跳過當次迴圈 - return - 退出函式 - 引數,函式的實參也可以是任意的資料型別。 - 方法(method) - 可以將一個函式設定為一個物件的屬性, 當一個物件的屬性是一個函式時, 我們稱這個函式是該物件的方法。 - 物件.方法名(); - 函式名();
2.作用域
- 作用域簡單來說就是一個變數的作用範圍。 - 在JS中作用域分成兩種: 1.全域性作用域 - 直接在script標籤中編寫的程式碼都執行在全域性作用域中 - 全域性作用域在開啟頁面時建立,在頁面關閉時銷燬。 - 全域性作用域中有一個全域性物件window,window物件由瀏覽器提供, 可以在頁面中直接使用,它代表的是整個的瀏覽器的視窗。 - 在全域性作用域中建立的變數都會作為window物件的屬性儲存 在全域性作用域中建立的函式都會作為window物件的方法儲存 - 在全域性作用域中建立的變數和函式可以在頁面的任意位置訪問。 在函式作用域中也可以訪問到全域性作用域的變數。 - 儘量不要在全域性中建立變數 2.函式作用域 - 函式作用域是函式執行時建立的作用域,每次呼叫函式都會建立一個新的函式作用域。 - 函式作用域在函式執行時建立,在函式執行結束時銷燬。 - 在函式作用域中建立的變數,不能在全域性中訪問。 - 當在函式作用域中使用一個變數時,它會先在自身作用域中尋找, 如果找到了則直接使用,如果沒有找到則到上一級作用域中尋找, 如果找到了則使用,找不到則繼續向上找,一直會 - 變數的宣告提前 - 在全域性作用域中,使用var關鍵字宣告的變數會在所有的程式碼執行之前被宣告,但是不會賦值。 所以我們可以在變數宣告前使用變數。但是不使用var關鍵字宣告的變數不會被宣告提前。 - 在函式作用域中,也具有該特性,使用var關鍵字宣告的變數會在函式所有的程式碼執行前被宣告, 如果沒有使用var關鍵字宣告變數,則變數會變成全域性變數 - 函式的宣告提前 - 在全域性作用域中,使用函式宣告建立的函式(function fun(){}),會在所有的程式碼執行之前被建立, 也就是我們可以在函式宣告前去呼叫函式,但是使用函式表示式(var fun = function(){})建立的函式沒有該特性 - 在函式作用域中,使用函式宣告建立的函式,會在所有的函式中的程式碼執行之前就被建立好了。
3.this(上下文物件)
- 我們每次呼叫函式時,解析器都會將一個上下文物件作為隱含的引數傳遞進函式。
使用this來引用上下文物件,根據函式的呼叫形式不同,this的值也不同。
- this的不同的情況:
1.以函式的形式呼叫時,this是window
2.以方法的形式呼叫時,this就是呼叫方法的物件
3.以建構函式的形式呼叫時,this就是新建立的物件
4.建構函式
- 建構函式是專門用來建立物件的函式 - 一個建構函式我們也可以稱為一個類 - 通過一個建構函式建立的物件,我們稱該物件時這個建構函式的例項 - 通過同一個建構函式建立的物件,我們稱為一類物件 - 建構函式就是一個普通的函式,只是他的呼叫方式不同, 如果直接呼叫,它就是一個普通函式 如果使用new來呼叫,則它就是一個建構函式 - 例子: function Person(){ } - 建構函式的執行流程: 1.建立一個新的物件 2.將新的物件作為函式的上下文物件(this) 3.執行函式中的程式碼 4.將新建的物件返回 - instanceof 用來檢查一個物件是否是一個類的例項 - 語法:物件 instanceof 建構函式 - 如果該物件時建構函式的例項,則返回true,否則返回false - Object是所有物件的祖先,所以任何物件和Object做instanceof都會返回true - 列舉物件中的屬性 for...in 語法: for(var 屬性名 in 物件){ } for...in語句的迴圈體會執行多次,物件中有幾個屬性就會執行幾次, 每次講一個屬性名賦值給我們定義的變數,我們可以通過它來獲取物件中的屬性
相關推薦
【6】裝飾器、閉包、偏函式、變數作用域問題
【一】、裝飾器思想 裝飾器是其實想增加一個函式的功能,但是又不想變動原來函式的程式碼,就用裝飾器。 比如:我們用別人的一個函式,又不是很滿意,所以用裝飾器裝飾一下即可。 def fun1(): prin
一文搞懂:詞法作用域、動態作用域、回撥函式、閉包
不管什麼語言,我們總要學習作用域(或生命週期)的概念,比如常見的稱呼:全域性變數、包變數、模組變數、本地變數、區域性變數等等。不管如何稱呼這些作用域的範圍,實現它們的目的都一樣: (1)為了避免名稱衝突; (2)為了限定變數的生命週期(本文以變數名說事,其它的名稱在規則上是一樣的)
Python 包、模組、函式、變數作用域
Python 專案的組織結構 - 包 -- 模組 --- 類 ---- 函式、變數 Python是利用包和模組來組織一個專案的。 包: 包的物理表現是一個資料夾,但是一個資料夾卻不一定是個包,要想讓個資料夾成為一個
Python函式的定義、匿名函式、函式的引數、函式呼叫、引數傳遞、變數作用域、遞迴呼叫
Python函式: 函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的程式碼段。 Python提供了許多內建函式,比如print()。你也可以自己建立函式,這被叫做使用者自定義函式。 定義函式: 在Python中,定義一個函式要使用def語句,依次寫出函式名、
python入門與進階篇(四)之包、模組、函式與變數作用域
python專案的組織結構 包(資料夾)-->模組(檔案)-->類-->函式和變數 seven.c4、six.c4:(seven)包名.模組名(c4) 構成名稱空間 seven包的結構: seven --t(子包) --
理清JS中的詞法、靜態、動態、函式、塊作用域
呃剛剛寫了好多,結果被我誤操作覆蓋掉了,我的心血 ╥﹏╥… 沒關係重新寫一遍,也提醒同樣在這個平臺寫部落格並且像我一樣喜歡使用markdown語言碼字的同學 “儲存線上到草稿”是一個好習慣,嗯嗯 今天雙十一,感覺該剁手了。。 很多同學在學習JavaS
【JavaScript高階】7、函式高階(作用域與作用鏈)
一、作用域 1. 理解 * 就是一塊"地盤", 一個程式碼段所在的區域 * 它是靜態的(相對於上下文物件), 在編寫程式碼時就確定了 2. 分類 * 全域性作用域 * 函式作用域 * 沒有塊作用域(ES6有了) 3. 作用 * 隔離變數,不同作用域下同名變數不會
python學習筆記12(裝飾器、偏函式、變數作用域)
裝飾器、偏函式、變數作用域 裝飾器 定義: 是一個閉包,把一個函式當做引數,返回一個替代版的函式 本質: 就是一個返回函式的函式 示例: #簡單的裝飾器 def func1(): #定義了一個函式 print("sunck is a good man") #希望在不改
改變函式作用域(call、 apply 、bind)
call、 apply 、bind 同異 1)第一個引數都是this的上下文 2)apply第二個引數是陣列,call和bind後面都是引數列表 3) call和apply預設會自動執行,bind需要在後面加()來自動執行 4)bind是E
linux shell 自定義函式(定義、返回值、變數作用域)介紹
inux shell 可以使用者定義函式,然後在shell指令碼中可以隨便呼叫。下面說說它的定義方法,以及呼叫需要注意那些事項。 一、定義shell函式(define function) 語法: [ function ] funname [()] { act
十二、變數作用域:區域性變數、全域性變數,函式版名片管理系統—新增函式文件
一、區域性變數: 區域性變數:就是在函式內部定義的變數。(在別的函式內不能用) 不同的函式可以定義相同名字的區域性變數,各用各的不會產生影響。 區域性變數的作用是為了臨時儲存資料需要在函式中定義變
Js中arguments的使用、函式自呼叫、變數作用域、函式作為引數傳入、函式作為返回值
1,arguments是一個比較特別的物件,每個函式中都有一個arguments,它接收函式傳入的引數,以陣列的形式存放在 arguments,可遍歷 //1,需求:求任意數的最大值 function getMax(){ var Max = arguments
Python的變數作用域、名稱空間和作用域的區別、This inspection detects shadowing names defined in outer scopes警告解決
Python的變數作用域: L(local)區域性作用域: 區域性變數:包含在def關鍵字定義的函式中,即在函式中定義的變數。每當函式被呼叫時都會建立一個新的區域性作用域。在函式內部的變數宣告,除非特別的使用global關鍵字宣告為其全域性變數,否則均預設為區域性變數。
python 的函數、值傳遞、和作用域(例子)
python legb1.python的函數格式: def FuncName([arg1,arg2,..]): func_suite def: def是函數的關鍵字 FuncName: 實際也是變量,它指向函數對象,在函數定義
1、【C++】類&物件/建構函式/拷貝建構函式/操作符過載/解構函式
一、C++類 & 物件 C++ 在 C 語言的基礎上增加了面向物件程式設計,C++ 支援面向物件程式設計。類是 C++ 的核心特性,通常被稱為使用者定義的型別。 類用於指定物件的形式,它包含了資料表示法和用於處理資料的方法。類中的資料和方法稱為類的成員。函式在
let const關鍵字定義變數、塊作用域
let 宣告的變數只能在它所在的程式碼中有效 { let a=10; var b=1; } console.log(a); console.log(b); for迴圈 中let變數 var a=[]; for(let i=0; i< 10; i++){
JS中的塊級作用域,var、let、const三者的區別
brush 語句 nbsp light 可見 undefine 函數 true 正常 1. 塊作用域{ } <script type="text/javascript"> { var a = 1; console.log
@EnableAutoConfiguration、ApplicationContext、@Configuration註解、@Bean註解以及配置自動掃描、bean作用域
EnableAutoConfiguration @EnableAutoConfiguration可以幫助SpringBoot應用將所有符合條件的@Configuration配置都載入到當前SpringBoot建立並使用的IoC容器。 詳解參加:SpringBoot之@EnableAu
Spring整理系列(11)——@Configuration註解、@Bean註解以及配置自動掃描、bean作用域
1、@Configuration標註在類上,相當於把該類作為spring的xml配置檔案中的<beans>,作用為:配置spring容器(應用上下文) package com.test.spring.support.configuration; @Configuration pub
JS中最經典的全域性變數和區域性變數問題(1、作用域和作用域鏈 2、變數宣告提前)
var a = 10; function test(){ a = 100; console.log(a); console.log(this.a); var a; console.log(a); } test(); 1、程式的執行結果為:100