微信小程序?qū)崙?zhàn)教程之WXS語法詳解
WXS語法
WXS是微信小程序的一套腳本語言,其特性包括:模塊、變量、注釋、運(yùn)算符、語句、數(shù)據(jù)類型、基礎(chǔ)類庫等。在本章我們主要介紹WXS語言的特性與基本用法,以及 WXS 與 JavaScript 之間的不同之處。
1 WXS介紹
在微信小程序中,除了邏輯層使用的 JavaScript 腳本語言之外,微信小程序還有一套自己的腳本語言WXS(全稱 WeiXin Script)。在實際項目開發(fā)中,WXS通常被用來做頁面數(shù)據(jù)的過濾或者是使用WXS進(jìn)行數(shù)據(jù)的計算處理,然后結(jié)合WXML組件,可以構(gòu)建小程序的頁面結(jié)構(gòu)。
在小程序頁面中,WXS 的用法有點(diǎn)類似于HTML中的 <script>
標(biāo)簽,但是WXS與JavaScript又是兩種不同的腳本語言。WXS 有自己的語法,但在某些語法方面又和 JavaScript 及其相似,所以很容易讓開發(fā)者誤以為 WXS 就是微信小程序中的 JavaScript 腳本。
2 基礎(chǔ)語法
2.1 WXS 模塊
WXS 模塊可以通過 WXML 文件中的 <wxs>
標(biāo)簽進(jìn)行聲明,或者是在WXML文件內(nèi)引入 .wxs
后綴名的文件。每一個 .wxs
后綴名的文件和 <wxs>
標(biāo)簽都是一個單獨(dú)的模塊,而且每個模塊都有自己獨(dú)立的作用域,開發(fā)者在模塊中聲明的變量和函數(shù)都是私有的,其他模塊對該模塊內(nèi)的變量和函數(shù)是不可見的。如果要想把一個模塊中的私有變量和私有函數(shù)對外暴露,需要使用 module.exports
語句實現(xiàn)。
WXML文件提供的 <wxs>
標(biāo)簽上有兩個屬性,分別是module和src。其中,module屬性的值是字符串類型的,用來表示當(dāng)前 <wxs>
標(biāo)簽的模塊名,該屬性是一個必填字段,在其他模塊中也是通過模塊名稱來引入該模塊中的私有屬性與函數(shù)的。在單獨(dú)是 WXML 文件中,<wxs>
的module屬性值都是唯一的,如果有重復(fù)模塊名稱,則按照定義的先后順序進(jìn)行引用,即后者會覆蓋前者。在不同文件之間的WXS模塊名不會相互覆蓋,互不影響。
<wxs>
標(biāo)簽的module屬性值的命名必須遵守以下兩個規(guī)范:
- 模塊名稱只能由大小寫字母、數(shù)字、下劃線組成;
- 模塊名的首字符必須為大小寫字母或下劃線,不能為數(shù)字。
module屬性值就是當(dāng)前模塊的模塊名稱,其命名規(guī)范和常見的編程語言中標(biāo)識符命名規(guī)則相似。在WXML文件中直接使用 <wxs>
標(biāo)簽定義module模塊的代碼如例1所示。
【例1】定義wxs模塊
<!-- index.wxml --> <wxs module="data"> var str = "hello world"; module.exports = { msg: str } </wxs> <view>data模塊的值:{{ data.msg }}</view>
上面代碼運(yùn)行后的效果如圖1所示。
圖1 wxs模塊輸出效果
在例1中聲明了一個名字為data的模塊,將模塊中str字符串變量復(fù)制給data模塊中的msg屬性,并向外暴露,在當(dāng)前頁面可以使用data.msg
獲取模塊中定義的值。
<wxs>
標(biāo)簽上還有另外一個src屬性,值也是字符串類型,用于表示引入的.wxs
文件的相對路徑,只有在當(dāng)前的<wxs>
標(biāo)簽為單閉合標(biāo)簽或者標(biāo)簽的內(nèi)容為空時有效。使用src屬性引入其他.wxs
文件時,需要注意以下幾點(diǎn):
- 只用引入
.wxs
文件模塊,且必須使用相對路徑; - WXS模塊均為單例,當(dāng)WXS模塊在第一次被引用時,會自動初始化為單例對象;如果在多個頁面或多個地方被多次引用時,使用的都是同一個WXS模塊對象;
- 如果一個WXS模塊在定義后一直沒有被引用,則該模塊不會被解析執(zhí)行。
在微信開發(fā)者工具中的index頁面文件夾上點(diǎn)擊鼠標(biāo)右鍵,選擇“新建文件”,效果如圖2所示。
圖2 選擇新建文件
將新建文件命名為tool.wxs
,該文件就是一個獨(dú)立的WXS模塊文件,在文件中可以直接編寫WXS腳本,其代碼如例2所示。
【例2】WXS腳本文件代碼
// tool.wxs var str = "hello world from tool.wxs"; var sum = function(a,b) { return a+b } module.exports = { msg: str, sum: sum }
上面例子中的.wxs
文件可以被其他的WXML文件或.wxs
文件引用,如果在WXML文件中引用,其代碼如例3所示。
【例3】WXML中引入.wxs
文件
<!-- index.wxs --> <wxs src="./tool.wxs" module="data" /> <view>data模塊的值:{{ data.msg }}</view> <view>求和:1 + 2 = {{ data.sum(1,2) }}</view>
上面代碼運(yùn)行后的效果如圖3所示。
圖3 WXML中引入.wxs
文件運(yùn)行效果
.wxs
文件還可以被其他的.wxs
文件引用,引用時需要使用require函數(shù)。在引用.wxs
文件時,需要注意以下幾點(diǎn):
- 只能引用
.wxs
文件模塊,且必須使用相對路徑; - wxs 模塊均為單例,wxs 模塊在第一次被引用時,會自動初始化為單例對象;多個頁面,多個地方,多次引用,使用的都是同一個 wxs 模塊對象;
- 如果一個 wxs 模塊在定義之后,一直沒有被引用,則該模塊不會被解析與運(yùn)行。
.wxs
文件引入其他WXS模塊代碼如例4所示。
【例4】
// tools.wxs var foo = "'hello world' from tools.wxs"; var bar = function (d) { return d; } module.exports = { FOO: foo, bar: bar, }; module.exports.msg = "some msg"; // logic.wxs var tools = require("./tools.wxs"); console.log(tools.FOO); console.log(tools.bar("logic.wxs")); console.log(tools.msg);
<!-- /page/index/index.wxml --> <wxs src="./../logic.wxs" module="logic" />
上面代碼運(yùn)行后,控制臺輸出效果如下:
'hello world' from tools.wxs
logic.wxs
some msg
在使用WXS模塊時需要注意以下幾點(diǎn):
<wxs>
模塊只能在定義模塊的 WXML 文件中被訪問到。使用<include>
或<import>
時,<wxs>
模塊不會被引入到對應(yīng)的 WXML 文件中;<template>
標(biāo)簽中,只能使用定義該<template>
的 WXML 文件中定義的<wxs>
模塊。
2.2 變量
WXS腳本的語法與JavaScript語法非常相似,但是二者又有著自己獨(dú)特的語法規(guī)則,例如在WXS腳本中聲明變量,必須使用 var 語句,不能使用const、let這些語句,這點(diǎn)和JavaScript是不同的。WXS中的變量均為值的引用,沒有聲明的變量直接賦值使用,會被定義為全局變量。如果只聲明變量而不賦值的話,該變量會被默認(rèn)賦值為undefined。WXS腳本聲明變量的示例代碼如例5所示。
【例5】WXS腳本聲明變量
var foo = 1; var bar = "hello world"; var i; // i === undefined
上面代碼,分別聲明了 foo、 bar、 i 三個變量。然后,foo 賦值為數(shù)值 1 ,bar 賦值為字符串 “hello world”。
在WXS腳本中的變量名可以稱為是標(biāo)識符,變量命名時需要遵循以下規(guī)則:
- 變量名只能由大小寫英文字母、數(shù)字、下劃線組成;
- 首字符必須是大小寫英文字母或下劃線,不能為數(shù)字;
- 變量名不能使用WXS腳本保留的關(guān)鍵字。
WXS腳本保留的關(guān)鍵字為:delete、void、typeof、null、undefined、NaN、Infinity、var、if、else、true、false、require、this、function、arguments、return、for、while、do、break、continue、switch、case、default等25個標(biāo)識符。
2.3 注釋
WXS腳本中的注釋與JavaScript中的注釋一樣,有兩種常見的注釋方法,分別是單行注釋和多行注釋。注釋代碼如例6所示。
【例6】WXS腳本注釋
<wxs module="sample"> // 方法一:單行注釋 /* 方法二:多行注釋 */ </wxs>
WXS腳本中還有一種獨(dú)特的注釋方法,即結(jié)尾注釋。直接在要注釋的代碼前面使用 /* 的方式將代碼注釋,從 /* 開始往后所有的WXS代碼都會被注釋,其代碼如例7所示。
【例7】結(jié)尾注釋
<wxs module="sample"> /* 方法三:結(jié)尾注釋。即從 /* 開始往后的所有 WXS 代碼均被注釋 var a = 1; var b = 2; var c = "fake"; </wxs>
在上面的例子中,所有的WXS代碼均被注釋掉了。
2.4 運(yùn)算符
運(yùn)算符用于執(zhí)行程序代碼運(yùn)算,會針對一個以上操作數(shù)項目來進(jìn)行運(yùn)算。WXS腳本中的運(yùn)算符可以分為基本運(yùn)算符、一元運(yùn)算符、位運(yùn)算符、比較運(yùn)算符、等值運(yùn)算符、賦值運(yùn)算符、二元邏輯運(yùn)算符等7種。
基本運(yùn)算符主要用于四則運(yùn)算,代碼如例8所示。
【8】基本運(yùn)算符
var a = 10, b = 20; // 加法運(yùn)算 console.log(30 === a + b); // 減法運(yùn)算 console.log(-10 === a - b); // 乘法運(yùn)算 console.log(200 === a * b); // 除法運(yùn)算 console.log(0.5 === a / b); // 取余運(yùn)算 console.log(10 === a % b);
一元運(yùn)算符主要用于變量的自增、自減等簡單運(yùn)算,代碼如例9所示。
【例9】一元運(yùn)算符
var a = 10, b = 20; // 自增運(yùn)算 console.log(10 === a++); console.log(12 === ++a); // 自減運(yùn)算 console.log(12 === a--); console.log(10 === --a); // 正值運(yùn)算 console.log(10 === +a); // 負(fù)值運(yùn)算 console.log(0-10 === -a); // 否運(yùn)算 console.log(-11 === ~a); // 取反運(yùn)算 console.log(false === !a); // delete 運(yùn)算 console.log(true === delete a.fake); // void 運(yùn)算 console.log(undefined === void a); // typeof 運(yùn)算 console.log("number" === typeof a);
WXS腳本中也可以使用二進(jìn)制的位運(yùn)算,代碼如例10所示。
【例10】位運(yùn)算符
var a = 10, b = 20; // 左移運(yùn)算 console.log(80 === (a << 3)); // 帶符號右移運(yùn)算 console.log(2 === (a >> 2)); // 無符號右移運(yùn)算 console.log(2 === (a >>> 2)); // 與運(yùn)算 console.log(2 === (a & 3)); // 異或運(yùn)算 console.log(9 === (a ^ 3)); // 或運(yùn)算 console.log(11 === (a | 3));
比較運(yùn)算也是常見的邏輯運(yùn)算中的一種,代碼如例11所示。
【例11】比較運(yùn)算符
var a = 10, b = 20; // 小于 console.log(true === (a < b)); // 大于 console.log(false === (a > b)); // 小于等于 console.log(true === (a <= b)); // 大于等于 console.log(false === (a >= b));
等值運(yùn)算符主要是判斷兩個變量的值是否相等,代碼如例12所示。
【例12】等值運(yùn)算符
var a = 10, b = 20; // 等號 console.log(false === (a == b)); // 非等號 console.log(true === (a != b)); // 全等號 console.log(false === (a === b)); // 非全等號 console.log(true === (a !== b));
賦值運(yùn)算符也是最常見的一種運(yùn)算符,用于為變量賦值,代碼如例13所示。
【例13】賦值運(yùn)算符
var a = 10; a = 10; a *= 10; console.log(100 === a); a = 10; a /= 5; console.log(2 === a); a = 10; a %= 7; console.log(3 === a); a = 10; a += 5; console.log(15 === a); a = 10; a -= 11; console.log(-1 === a); a = 10; a <<= 10; console.log(10240 === a); a = 10; a >>= 2; console.log(2 === a); a = 10; a >>>= 2; console.log(2 === a); a = 10; a &= 3; console.log(2 === a); a = 10; a ^= 3; console.log(9 === a);
二元邏輯運(yùn)算符就是用于邏輯與、邏輯或的運(yùn)算符,代碼如例14所示。
【例14】二元邏輯運(yùn)算符
var a = 10, b = 20; // 邏輯與 console.log(20 === (a && b)); // 邏輯或 console.log(10 === (a || b));
在WXS腳本中的運(yùn)算符之間存在優(yōu)先級關(guān)系,運(yùn)算符的優(yōu)先級決定了表達(dá)式中運(yùn)算執(zhí)行的先后順序。優(yōu)先級從上到下依次遞減,最上面具有最高的優(yōu)先級,逗號操作符具有最低的優(yōu)先級。表達(dá)式的結(jié)合次序取決于表達(dá)式中各種運(yùn)算符的優(yōu)先級。優(yōu)先級高的運(yùn)算符先結(jié)合,優(yōu)先級低的運(yùn)算符后結(jié)合,同一行中的運(yùn)算符的優(yōu)先級相同。在WXS腳本中,括號“()”的優(yōu)先級最高,逗號“,”的優(yōu)先級最低。
2.5 語句
WXS腳本中主要包含了兩類語句,一類是分支語句,包括if語句、switch語句;另一類是循環(huán)語句,包括for語句、while語句。
在WXS腳本中if的用法如例15所示。
【例15】if語句
if (表達(dá)式) { // 代碼塊 } else if (表達(dá)式) { // 代碼塊 } else { // 代碼塊 }
當(dāng)大括號中的代碼只有一行時,大括號“{}”可以省略,效果如例16所示。
【例16】if語句的簡寫方式
if (表達(dá)式) 語句; else 語句; // 或者是 if (表達(dá)式) 語句; else 語句;
switch語句需要用到case關(guān)鍵字進(jìn)行分支,case關(guān)鍵字后面只能使用變量、數(shù)字、字符串,最后都不滿足的條件使用default關(guān)鍵字分支。switch語句的語法如例17所示。
【例17】switch語法
switch (表達(dá)式) { case 變量: 語句; case 數(shù)字: 語句; break; case 字符串: 語句; default: 語句; }
switch語句的用法與if不同,但是都可以用于分支,其最終執(zhí)行的結(jié)果是類似的。if語句的條件是表達(dá)式,而switch語句的條件是滿足表達(dá)式的值。switch語句的示例代碼如例18所示。
【例18】switch示例
var week = 1; switch (week) { case 1: console.log("周一"); break; case 2: console.log("周二"); break; case 3: console.log("周三"); break; case 4: console.log("周四"); break; case 5: console.log("周五"); break; case 6: console.log("周六"); break; case 7: console.log("周日"); break; default: console.log("請輸入正確的周數(shù)"); }
上面示例代碼運(yùn)行后,在控制臺輸出結(jié)果如下:
周一
如果有過JavaScript語言或其他編程語言的學(xué)習(xí)經(jīng)歷的話,肯定對循環(huán)并不陌生,特別是for循環(huán)。WXS腳本的for循環(huán)語法與JavaScript語言的for循環(huán)語法是一樣的,具體代碼如例19所示。
【例19】for循環(huán)語法
for (語句; 語句; 語句) 語句; // 或者是 for (語句; 語句; 語句) { 代碼塊; }
for循環(huán)的示例代碼如例20所示。
【例20】for循環(huán)示例
for (var i = 0; i < 3; ++i) { console.log(i); if( i >= 1) break; }
上面示例代碼運(yùn)行后,在控制臺輸出的結(jié)果如下:
0
1
while也是用于循環(huán)的語句,當(dāng)表達(dá)式的值為true時,循環(huán)執(zhí)行語句或代碼塊,在代碼塊中也支持break、continue關(guān)鍵詞來跳過循環(huán),其語法代碼如例21所示。
【例21】while語句語法
while (表達(dá)式) 語句; // 或者是 while (表達(dá)式){ 代碼塊; }
我們還可以使用do-while
語句來執(zhí)行循環(huán),其語法如例22所示。
do { 代碼塊; } while (表達(dá)式)
在使用while
或do-while
語句執(zhí)行循環(huán)的代碼時,一定要注意在合適的時機(jī)設(shè)置表達(dá)式的值為false,或者是合理設(shè)置跳出循環(huán),否則將會出現(xiàn)死循環(huán)的情況。如果實際開發(fā)需求中需要使用到無限循環(huán),可以不做跳出循環(huán)的操作。
3 數(shù)據(jù)類型
WXS腳本語言中的變量可以保存多種數(shù)據(jù)類型,包括數(shù)值、字符串、布爾值、對象、函數(shù)、數(shù)組等。WXS腳本語言中的數(shù)據(jù)類型分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,基本數(shù)據(jù)類型是指簡單的數(shù)據(jù)段,引用數(shù)據(jù)類型是指有多個值構(gòu)成的對象。當(dāng)我們把一個值賦值給一個變量時,解析器首先要確認(rèn)這個值是基本數(shù)據(jù)類型還是引用數(shù)據(jù)類型,以此來判斷該值存儲的內(nèi)存位置與大小。
3.1 基本數(shù)據(jù)類型
在WXS腳本語言中,基本數(shù)據(jù)類型包括number(數(shù)值)、string(字符串)、boolean(布爾值)等。
number包括兩種數(shù)值,分別是整數(shù)和小數(shù),示例如下:
var a = 10; var PI = 3.141592653589793;
number也可以作為對象類型,其方法可以參考ECMAScript5標(biāo)準(zhǔn),常見的方法有:
- toString()
- toLocaleString()
- valueOf()
- toFixed()
- toExponential()
- toPrecision()
WXS的其他幾種基本數(shù)據(jù)類型的屬性與方法都可以參考ES5標(biāo)準(zhǔn)。其中,string字符串的值可以使用單引號和雙引號兩種寫法,boolean類型只有兩個特定的值,分別是true和false。
3.2 引用數(shù)據(jù)類型
WXS腳本語言中的引用數(shù)據(jù)類型包括object(對象)、array(數(shù)組)、function(函數(shù))、date(日期)等,這些引用數(shù)據(jù)類型與基本數(shù)據(jù)類型不同的是,基本數(shù)據(jù)類型是簡單的數(shù)據(jù)段,被保存在棧內(nèi)存中,而引用數(shù)據(jù)類型是有多個值構(gòu)成的對象,被保存在堆內(nèi)存中。
WXS腳本語言與其他語言不同的是,開發(fā)者不可以直接訪問堆內(nèi)存空間中的位置,也不能直接操作堆內(nèi)存空間,只能操作對象在棧內(nèi)存中的引用地址。所以,引用類型的數(shù)據(jù)在棧內(nèi)存中保存的是對象在堆內(nèi)存中的引用地址,通過這個引用地址可以快速查找到保存在堆內(nèi)存中的對象。
(1)object對象
在WXS腳本中,object對象是一種無序的鍵值對,如果想要定義一個object對象,可以使用以下方法:
// 生成一個新的空對象 var o = {} //生成一個新的非空對象 o = { str: '', i: 1, fn: function() {} };
調(diào)用對象中的屬性時,可以使用“對象.屬性”的語法獲取對應(yīng)屬性的值,示例代碼如下:
// 讀取對象屬性 console.log(o.str)
(2)function函數(shù)
WXS腳本語言中有三種函數(shù)的用法,分別是普通函數(shù)、匿名函數(shù)和閉包函數(shù)。普通函數(shù)可以直接使用function關(guān)鍵字聲明,也可以將一個匿名函數(shù)賦值給某個變量,示例代碼如下:
// 普通函數(shù) function fn () {} // 或者是 var fn = function () {}
閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù),WXS腳本語言中也可以像JavaScript語言那樣使用閉包,示例代碼如例22所示。
【例22】閉包
var a = function (x) { return function () { return x; } } var b = a(100); console.log( 100 === b() ); // true
(3)array數(shù)組
array支持兩種定義數(shù)組的方式,一種是生成一個新的空數(shù)組,語法如下:
var a = [];
另一種是生成一個新的非空數(shù)組,數(shù)組中的元素可以是任意類型,語法如下:
var a = [1,"a",{},function(){}];
array對象上也定義了一系列操作數(shù)組的方法,例如數(shù)組轉(zhuǎn)字符串的toString()
、追加元素的push()
、用于排序的sort()
等方法,關(guān)于array對象的具體方法可以參考ES5標(biāo)準(zhǔn)。
(4)date日期
在WXS腳本中,想要生成一個date日期類型的對象,需要借助getDate()
方法,該方法用于返回當(dāng)前的日期對象。開發(fā)者也可以使用getDate()
方法提供的多種重載方法,生成不同格式的日期對象,語法如下所示:
getDate() getDate(milliseconds) getDate(datestring) getDate(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]])
在上面getDate()
重載方法的參數(shù)中,milliseconds是指從1970年1月1日零點(diǎn)開始計算到指定日期時間之間的毫秒數(shù);datestring是指日期字符串,格式為:month day, year hours:minutes:seconds
。
3.3 正則表達(dá)式
正則表達(dá)式(英文全稱 Regular Expression,簡寫 regex、regexp或RE)是使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串搜索模式,可以用于文本搜索和文本替換等操作中。正則表達(dá)式不屬于某個編程語言,而是一種由一個字符序列形成的搜索模式。正則表達(dá)式可以是一個簡單的字符,或者是一個更復(fù)雜的模式,當(dāng)開發(fā)者在文本中搜索數(shù)據(jù)時,可以用搜索模式來描述要查詢的內(nèi)容。
在WXS腳本中,生成正則表達(dá)式對象需要使用getRegExp()
方法,語法如下:
getRegExp(pattern[, flags])
getRegExp()
方法的參數(shù)pattern表示正則表達(dá)式的內(nèi)容;參數(shù)flags表示修飾符,該字段只能包含以下字符:
- g:表示global,執(zhí)行全局匹配(查找所有匹配而非在找到第一個匹配后停止)。
- i:表示ignoreCase,執(zhí)行對大小寫不敏感的匹配。
- m:表示multiline,執(zhí)行多行匹配。
正則表達(dá)式的示例代碼如例23所示。
【例23】
var a = getRegExp("x", "img"); console.log("x" === a.source); // true console.log(true === a.global); // true console.log(true === a.ignoreCase); // true console.log(true === a.multiline); // true
3.4 數(shù)據(jù)類型判斷
在WXS腳本中,可以借助每個對象的constructor屬性來判斷數(shù)據(jù)類型,示例代碼如例24所示。
【例24】constructor屬性判斷數(shù)據(jù)類型
var number = 10; console.log( "Number" === number.constructor ); // true var string = "str"; console.log( "String" === string.constructor ); // true var boolean = true; console.log( "Boolean" === boolean.constructor ); // true var object = {}; console.log( "Object" === object.constructor ); // true var func = function(){}; console.log( "Function" === func.constructor ); // true var array = []; console.log( "Array" === array.constructor ); // true var date = getDate(); console.log( "Date" === date.constructor ); // true var regexp = getRegExp(); console.log( "RegExp" === regexp.constructor ); // true
也可以使用typeof來區(qū)分部分?jǐn)?shù)據(jù)類型,示例代碼如例25所示。
【例25】typeof區(qū)分?jǐn)?shù)據(jù)類型
var number = 10; var boolean = true; var object = {}; var func = function(){}; var array = []; var date = getDate(); var regexp = getRegExp(); console.log( 'number' === typeof number ); // true console.log( 'boolean' === typeof boolean ); // true console.log( 'object' === typeof object ); // true console.log( 'function' === typeof func ); // true console.log( 'object' === typeof array ); // true console.log( 'object' === typeof date ); // true console.log( 'object' === typeof regexp ); // true console.log( 'undefined' === typeof undefined ); // true console.log( 'object' === typeof null ); // true
4 基礎(chǔ)類庫
WXS的數(shù)據(jù)類型一共有八種,這與JavaScript的六中數(shù)據(jù)類型不太一致。在WXS腳本語言中,基本數(shù)據(jù)類型包括number、string、boolean、object、array、function、date、regexp等八種。在WXS腳本中的八種數(shù)據(jù)類型與JavaScript的數(shù)據(jù)類型有所不同,例如生成date對象時需要使用getDate()
函數(shù),生成 regexp 對象需要使用 getRegExp函數(shù),這些對象都不能使用new關(guān)鍵字直接生成。WXS腳本基于這八種數(shù)據(jù)類型,派生出六種基礎(chǔ)類庫,分別是console、Math、JSON、Number、Date和Global。
WXS腳本語言的基礎(chǔ)類庫與JavaScript語言的ES5標(biāo)準(zhǔn)是基本是一樣的,區(qū)別在于WXS中的console基礎(chǔ)類庫只提供了console.log()
函數(shù)。其他的基礎(chǔ)類庫中對象的數(shù)據(jù)和函數(shù),可以參考ES5標(biāo)準(zhǔn)文檔。
5 本章小結(jié)
本章我們學(xué)習(xí)了WXS的一些語法特性,其實WXS語法和JavaScript的語法基本上是一致的,只是對JavaScript腳本語言的上層做了一些封裝和限制。二者相同的地方非常多,例如if-else、switch、for等用于分支和循環(huán)的常用語法,還包括一些基礎(chǔ)的類庫。但是二者也有一些區(qū)別,例如在WXS模塊中不支持try-catch語句。WXS腳本可以方便開發(fā)者在WXML中快速定義私有變量和函數(shù),在使用WXS語言時可以參考ES5標(biāo)準(zhǔn),但是還要注意WXS語法與JavaScript語法的區(qū)別。
到此這篇關(guān)于微信小程序?qū)崙?zhàn)教程之WXS語法詳解的文章就介紹到這了,更多相關(guān)微信小程序WXS語法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js判斷當(dāng)頁面無法回退時關(guān)閉網(wǎng)頁否則就history.go(-1)
當(dāng)頁面沒有前驅(qū)歷史記錄時,點(diǎn)擊返回按鈕時直接關(guān)閉頁面,否則就退回到前一頁2014-08-08關(guān)于前后端json數(shù)據(jù)的發(fā)送與接收詳解
這篇文章主要給大家介紹了關(guān)于前后端json數(shù)據(jù)發(fā)送與接收的相關(guān)資料,文中通過示例代碼詳細(xì)介紹了關(guān)于flask中的json數(shù)據(jù)接收和前端發(fā)送json數(shù)據(jù)等內(nèi)容,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07原生JS實現(xiàn) MUI導(dǎo)航欄透明漸變效果
透明漸變導(dǎo)航是一種解決滾動條通頂?shù)淖兺ǚ桨浮_@篇文章主要介紹了原生JS實現(xiàn) MUI導(dǎo)航欄透明漸變效果,需要的朋友可以參考下2017-11-11使用JavaScript解決網(wǎng)頁圖片拉伸問題(推薦)
本文給大家介紹使用javascript解決網(wǎng)頁圖片拉伸問題,本文給大家介紹的非常詳細(xì),具有參考借鑒價值,感興趣的朋友一起看看吧2016-11-11