国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

JS和函數式語言的三特性_基礎知識

來源:懂視網 責編:小采 時間:2020-11-27 21:20:32
文檔

JS和函數式語言的三特性_基礎知識

JS和函數式語言的三特性_基礎知識:首先要有一個概念:并不是一個語言支持函數,這個語言就可以叫做函數式語言。函數式語言中的函數(function),除了能被調用之外,還具有一些其他性質。有以下三點:1. 函數是運算元2. 在函數內保存數據3. 函數內的運算對函數外無副作用一、函數是運算元普
推薦度:
導讀JS和函數式語言的三特性_基礎知識:首先要有一個概念:并不是一個語言支持函數,這個語言就可以叫做函數式語言。函數式語言中的函數(function),除了能被調用之外,還具有一些其他性質。有以下三點:1. 函數是運算元2. 在函數內保存數據3. 函數內的運算對函數外無副作用一、函數是運算元普

首先要有一個概念:并不是一個語言支持函數,這個語言就可以叫做“函數式語言”。函數式語言中的函數(function),除了能被調用之外,還具有一些其他性質。有以下三點:
1. 函數是運算元
2. 在函數內保存數據
3. 函數內的運算對函數外無副作用
一、函數是運算元
普通的函數調用時,可以抽象的理解為:函數就是一個運算符,傳入的參數是運算元;
但當JavaScript中的函數作為另一個函數的參數使用時,是傳遞引用的,這個“傳入參數”就可以被理解為是一個運算元。由此的結論是,(作為“傳入參數”的)函數具有運算元的含義,“函數參數”與普通參數并沒有什么不同。

二、在函數內保存數據
在命令式語言中,函數內部的私有變量(局部變量)是不能被保存的。從程序的執行方式上來講,局部變量在棧上分配,在函數執行結束后,所占用的棧被釋放。因此函數內的數據不可能被保存。
在JavaScript的函數中,函數內的私有變量可以被修改,而且當再次“進入”到該函數內部時,這個被修改的狀態仍將持續。下面的例子說明了這個特性:
代碼如下:
var set,get;
function MyFunc(){
var value = 100;

function set_value(v){
value = v;
}
function get_value(){
return value;
}

set = set_value;
get = get_value;
}
MyFunc();
console.log(get()); //100
set(300);
console.log(get()); //300
顯而易見的一個好處是,如果一個數據能夠在函數內持續保存,那么該函數(作為構造器)賦給實例時就可以使用這些數據進行運算;而在多個實例之間,由于數據存在于不同的閉包中,由此相互不會產生影響。
以面向對象的術語來解釋,就是說不同的實例有各自的私有數據(復制自某個公共的數據)。下面的例子說明了這個特性:
代碼如下:
function MyObject(){
var value = 100;
this.setValue = function(){
value = v;
}
this.showValue = function(){
console.log(value);
}
}
var obj1 = new MyObject();
var obj2 = new MyObject();

obj2.setValue(300);
obj1.showValue(); //100;
三、函數內的運算對函數外無副作用
這一特性的含義在于:
* 函數使用入口參數進行運算,而不修改它(作為值參數而不是變量參數使用)
* 在運算過程中不會修改函數外部的其他數據的值(例如全局變量)
* 運算結束后通過“函數返回”向外部系統傳值

這樣的函數在運算過程中對外部系統是無副作用的。然而我們注意到,JavaScript允許在函數內部引用和修改全局變量,甚至可以聲明全局變量。這一點其實是破壞它的函數式特性的。
除此之外,JavaScript也允許在函數內修改對象和數組成員————這些成員應該由對象方法而非對象系統外的其他函數來修改。
所以:JavaScript這項特性只能通過開發人員的編程習慣來保證。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JS和函數式語言的三特性_基礎知識

JS和函數式語言的三特性_基礎知識:首先要有一個概念:并不是一個語言支持函數,這個語言就可以叫做函數式語言。函數式語言中的函數(function),除了能被調用之外,還具有一些其他性質。有以下三點:1. 函數是運算元2. 在函數內保存數據3. 函數內的運算對函數外無副作用一、函數是運算元普
推薦度:
標簽: js 函數 特性
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产精品网址 | 亚洲第一区视频 | 亚洲欧洲国产经精品香蕉网 | 欧美色图亚洲天堂 | 激情欧美一区二区三区 | 成人免费一级毛片在线播放视频 | 国产精品视频久久久 | 亚洲一区二区三区免费 | 在线国产毛片 | 能看毛片的网站 | 久久精品亚洲欧美日韩久久 | 欧美亚洲综合一区 | 国产精品 视频一区 二区三区 | 91久久精品国产免费一区 | 一区二区在线播放视频 | 亚洲综合欧美 | 日韩国产欧美一区二区三区在线 | 国内精品免费视频 | 一区二区三区四区日韩 | 国产精品va在线观看无 | 欧美日在线 | 欧美精品日韩一区二区三区 | 欧美日韩亚洲区久久综合 | 久久久久久久亚洲精品 | 91精品国产色综合久久不卡蜜 | 91发布页| 亚洲欧美专区 | 看全色黄大色大片免费久久久 | 亚洲日韩图片专区第1页 | 国产精品成人一区二区 | 欧美中文娱乐网 | 精品国产日韩亚洲一区二区 | 一级毛片一级毛片一级级毛片 | 久久99国产精品成人欧美 | 久久久久久久国产精品毛片 | 在线观看日韩精品 | 精品一区二区三区四区在线 | 欧美αv日韩αv另类综合 | 国产精品高清一区二区三区不卡 | 91久久综合九色综合欧美98 | 亚洲另类网 |