免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
什么是WPS.JS宏?
??后臺回復(fù)js獲取更多js教程

HI,大家好,我是星光。

近2年前WPS剛剛推出JS宏的時(shí)候,咱們說現(xiàn)在用個(gè)表格是越發(fā)不容易了,VB、SQL、JS、Python都來插一腿,聽說永中還支持Java,后來連Excel函數(shù)也漸趨于編程化……難怪有外國佬一本正經(jīng)的說用好Excel的都是程序員ε=(′ο`*)))。



最近JSA(WPS.JS宏的簡稱)慢慢熱起來了,今天就給大家回顧一下當(dāng)初的一篇舊文,重新了解一下這么幾個(gè)重要的問題??

? 什么是JS?

? 關(guān)于WPS.JS有沒有一些實(shí)際案例?

? JS宏和VBA有哪些不同之處?



1 丨 
什么是JS


JS是Java Script的簡稱,是一門高端的動(dòng)態(tài)的弱類型的高效而通用的編程語言。它本身是面對Web的,但由于現(xiàn)代的Web瀏覽器,不論是電腦、能手機(jī)、甚至游戲機(jī),都包含了Java Script解釋器,這就使JS成為了史上使用最廣泛的編程語言之一。

事實(shí)上,咱們所熟悉的VBA和M語言,均可以調(diào)用一部分JS功能,比如VBA調(diào)取JS處理網(wǎng)頁數(shù)據(jù),M語言通過網(wǎng)頁函數(shù)調(diào)用JS的正則表達(dá)式等。


2丨 
實(shí)際案例

舉幾個(gè)JS宏的實(shí)際例子吧。

1,使用JS實(shí)現(xiàn)條件語句

JS的條件語句和VBA相似,也是if和else結(jié)構(gòu)。但需要意的是,當(dāng)if判斷結(jié)果存在多條語句時(shí),需要使用花括號{}包起來,形成一條復(fù)合語句。

function myIF(){ let strID=Range('a1').Value2; if(!strID){ let s=Range('a2').Value2; if(s=='對') var t='公眾號Excel星球'; else var t='看見星光'; } else { var t='wps.js' } MsgBox(t)}

2,使用JS實(shí)現(xiàn)循環(huán)語句

在VBA教程里咱們講過,VBA循環(huán)語句有3種常見形式,for...to計(jì)數(shù)循環(huán)、for...ecah集合循環(huán)和while條件循環(huán)。實(shí)現(xiàn)這三種循環(huán)形式的JS代碼如下:

for...to計(jì)數(shù)循環(huán)▼
function mycycle1(){  Range('a1:a10').Clear();//清空全部  for (let i=1;i<=10;i++){    Cells(i,1).Value2=i;//單元格賦值  }  MsgBox('操作完成')}

for...of集合循環(huán)▼
function mycycle2(){ for(let sht of Worksheets){//遍歷工作表集合 if(sht.Name=='看見星光'){//判斷工作表名稱是否為看見星光 MsgBox('工作表存在看見星光。'); return; } } MsgBox('工作表不存在看見星光');}

while 條件循環(huán)▼
function mycycle3(){//條件循環(huán)為a1:a10賦值  Columns.Item(1).Clear();  let i=1;  while(i<11){//如果i小于11則執(zhí)行循環(huán)體    Cells(i,1).Value2=i;    i++  }}

3,JS中的數(shù)組

眾所周知,數(shù)組是編程中最重要的數(shù)據(jù)結(jié)構(gòu)。盡管如此,由于VBA太古老了,數(shù)組基本就是最原始的狀態(tài),所以數(shù)組的各種常用方法,比如靈活的查找、動(dòng)態(tài)的增刪、以及排序、去重等等……——一個(gè)都沒有!

而JS的數(shù)組呢?方法有幾十個(gè),常用的數(shù)組串聯(lián)(join),增刪(splice),排序(sort),篩選(filter),判斷(some/every),查找(find),合并(concat),填充(fill),扁平化(flat)以及迭代的map、forEach、reduce等等。

除此之外,JS的數(shù)組也比VBA靈活許多,不但大小動(dòng)態(tài),支持一次添加多個(gè)元素,而且添加的位置也很自由,可以輕松實(shí)現(xiàn)隊(duì)列、棧等數(shù)據(jù)結(jié)構(gòu)。

舉一段簡單代碼(需要注意JS的數(shù)組是以中括號[]形式包裹起來的有序元素集合)。

代碼看不全可以左右拖動(dòng)...▼
function array_test(){ let r=[];//聲明一個(gè)空數(shù)組 r[0]=1;//數(shù)組下標(biāo)為0添加一個(gè)值1 r.push(2,3);//在數(shù)組末尾添加2個(gè)元素 r.pop();//刪除數(shù)組最后一個(gè)元素 r.unshift(-1,0);//在數(shù)組開頭添加兩個(gè)元素 r.shift();//刪除數(shù)組首個(gè)元素 Range('1:1').Clear();//清空第一行所有 Range('a1').Resize(1,r.length).Value2=r;//數(shù)組結(jié)果寫入第1行}

4,JS中的對象

數(shù)組+字典是VBA數(shù)據(jù)處理的最佳組合方案,在JS宏中也是如此。JS也有類似字典的數(shù)據(jù)結(jié)構(gòu),只是它不叫字典,叫……對象。

▲誰還沒個(gè)對象不是?

對象在JS中是使用花括號{}包括起來的數(shù)據(jù)內(nèi)容,是鍵值對結(jié)構(gòu):

{key1:value1,key2:value2,...}

和字典類似,key作為鍵名是對象的屬性,value是鍵名對應(yīng)的值。鍵名可以使用數(shù)值和字符串來表示。健值可以是任意類型。通常鍵名和值之間使用冒號分隔。例如,定義一個(gè)對象obj。示例代碼如下:

function d_test1(){  var d={名字:'看見星光',公眾號:'Excel星球'};  Console.log(d.名字);}

代碼運(yùn)行后在本地窗口顯示字符串:看見星光。

JS對象同樣具有查改增刪等方法,相關(guān)示例代碼如下:

function d_test2(){ var d={};//創(chuàng)建一個(gè)空對象 d['姓名']='看見星光';//添加鍵值對 d.愛好='學(xué)習(xí)';//如果沒有特殊符號,添加鍵值對也可以使用點(diǎn)號操作 Debug.Print(d['姓名']);//讀取屬性姓名對應(yīng)的值 d.姓名='公眾號Excel星球';//修改姓名對應(yīng)的值 delete d.愛好;//刪除屬性愛好 Debug.Print('愛好' in d);//使用in運(yùn)算符判斷對象中是否存在指定元素 if(!d.姓名){Debug.Print('不存在')}//!運(yùn)算符 else Debug.Print('存在'); let r1=Object.keys(d);//數(shù)組形式,返回對象屬性集合 let r2=Object.values(d);//數(shù)組形式,顯示值集合 let r3=Object.entries(d);//數(shù)組形式,返回對象鍵值對}


3 丨 
JS宏和VBA的異同


從外觀上來看,JS宏的IDE和VBA長的差不多,也是由工程資源管理器、屬性窗口、本地窗口等部位組成,編寫方式也和VBA相類似。

兩者主要是語法不同。

聊幾點(diǎn)主要的不同之處。


1,過程結(jié)構(gòu)

VBA用Sub...End Sub關(guān)鍵字來定義過程,而JS用function(){}關(guān)鍵字來定義函數(shù),不存在Sub過程。

2,注釋問題

VBA注釋使用單引號標(biāo)識,JS的單行注釋使用//,多行注釋使用/*和*/


3,變量問題

VBA聲明變量,需要使用Dim關(guān)鍵字,JS使用var或者let關(guān)鍵字(兩者間的不同后面我們開單章再聊,作為新人通常推薦使用var)。VBA變量聲明有數(shù)據(jù)類型,JS作為弱類型的編程語言,不需要聲明變量類型。另外,JS解釋器有自己的內(nèi)存管理機(jī)制,可以自動(dòng)對內(nèi)存進(jìn)行垃圾回收,當(dāng)不再有任何引用指向一個(gè)對象時(shí),解釋器就會自動(dòng)回收它所占用的內(nèi)存資源,這個(gè)比VBA的內(nèi)存管理更加穩(wěn)定高效。

此外,JS支持在1行語句中對多個(gè)變量進(jìn)行賦值。見下圖第3行代碼。


4,語句問題

首先,JS嚴(yán)格區(qū)分字母大小寫,其次,它使用分號(;)將語句分隔。語句如果各自獨(dú)占一行,語句間的分號通??梢允÷?,這時(shí)候換行符就等同于分號的作用——但作為初學(xué)者,還是建議大家養(yǎng)成使用分號的習(xí)慣。最后,當(dāng)將多條語句聯(lián)合在一起,形成一條復(fù)合語句時(shí),需要使用花括號{}將多條語句括起來。

5,對象、方法和屬性問題

VBA可以直接使用集合索引的方式引用對象,比如引用第1個(gè)工作表:

Worksheets(1).Select

JS需要增加一個(gè)Item屬性,還是引用第1個(gè)工作表,語句如下:

Worksheets.Item(1).Select()

比較以上兩條語句,你還會發(fā)現(xiàn)一點(diǎn)不同。在VBA中,方法不需要加(),而JS必須加括號,比如Select()。屬性則不用加括號。

除此之外,在VBA中,單元格對象默認(rèn)讀取Value屬性,JS沒有這個(gè)默認(rèn)屬性,而且它使用的關(guān)鍵字也不是Value,而是Value2

6,運(yùn)算符問題

這個(gè)不一樣的地方有點(diǎn)兒多。

在VBA中判斷兩個(gè)值是否相等,使用運(yùn)算符(=),或者不等于(<>),而JS表示等號判斷的運(yùn)算符是(==),不等于的運(yùn)算符是(!=)

VBA的邏輯與是And,邏輯或是Or,邏輯非是Not。JS的輯與是&&,邏輯或是||,邏輯非是!。

VBA的文本連接符是&或+,JS不支持&,只支持+;此時(shí)要求合并的數(shù)據(jù)必須有一個(gè)是字符串,否則+就是加法運(yùn)算了。

……

沒了,以后想到啥就再補(bǔ)吧。雖然WPS的JS宏依然有很多不方便之處,但無論如何它都走出了自己的一步,不再處處追求兼容Excel,這才是走在成為國產(chǎn)之光的正確道路上對不對?只有和別人不一樣,才能發(fā)出光芒,不然頂多算個(gè)漂亮的影子。

OK,今天和大家分享的內(nèi)容就這些。我是星光,左上角點(diǎn)關(guān)注,右下角點(diǎn)個(gè)贊,更多表格精彩內(nèi)容可以點(diǎn)擊菜單→資源福利等。揮揮手,明天再見。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
當(dāng)WPS開始支持JS語言,微軟Excel又該何去何從?
3、WPS JS循環(huán)語句之for in
JavaScript基本語法(全)
20道關(guān)于JavaScript的基礎(chǔ)面試題
js篇
Excel VBA教程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服