4
4
zScript提供了两种形式的变量定义语句。
5
5
6
6
##### 1.直接定义的形式,该语句的一般形式为:
7
-
7
+
8
8
var 标识符;
9
9
该语句的含义是:定义变量名为“标识符”的变量。例如:
10
-
10
+
11
11
var a;
12
12
该语句的作用是:定义一个名为“a”的变量。
13
13
14
14
##### 2.定义同时给变量初始化赋值,该语句的一般形式为:
15
-
15
+
16
16
var 标识符 = 表达式;
17
17
该语句的含义是:定义变量名为“标识符”的变量,且给变量赋值为表达式的结果。例如:
18
-
18
+
19
19
var a = 1 + 2;
20
20
该语句的作用是:定义一个名为“a”的变量,且赋值为3。
21
21
“var”关键字可同时定义多个变量,每个变量之间使用符号“,”分割。
22
- ### 匿名函数的定义
23
- 匿名函数定义的一般形式为:
24
-
25
- (形参列表) {
26
- 语句组
27
- }
28
- 该语句的含义是:生成一个函数对象,例如:
29
-
30
- (a) {
31
- console.log(a);
32
- }
33
- 该语句的作用是:定义一个函数,它有一个名为“a”的形参,执行此函数会将a的值打印到屏幕上。
34
- 形参列表,可为空、一个、多个,多个形参之间使用“,”分割。
35
22
### 数组的定义
36
23
数组定义的一般形式为:
37
-
24
+
38
25
var a = [表达式1, 表达式2, ...];
39
26
该语句的含义是:生成一个数组,数组元素为中括号中表达式的结果。例如:
40
-
27
+
41
28
var a = [1, 2, 3];
42
29
该语句的作用是:定义一个包含三个元素的数组,元素的值分别为1、2、3,然后赋值给变量a;
43
30
数组使用“[ ”“] ”定义,中间内容可以为空、一个表达式、多个表达式,多个表达式之间使用“,”隔开。
44
-
31
+
45
32
a = a[0];
46
33
取数组元素语法和C语言一样,都是中括号中写入数组下标。
47
34
### 选择控制语句
@@ -53,37 +40,33 @@ Break语句用于switch结构中,用于终止当前switch结构的执行。
53
40
zScript提供了两种形式的if语句。
54
41
##### 1.单if子句的if语句。该if语句的一般形式为:
55
42
56
- if(表达式)
57
- {
43
+ if(表达式) {
58
44
语句组
59
45
}
60
46
该语句的含义是:只有表达式的值为非零值时,才执行其内部的语句组。例如:
61
47
62
- if ( a > b )
63
- {
48
+ if ( a > b ) {
64
49
console.log(“hello”);
65
50
}
66
51
该语句的作用是:当a的值大于b的值时(此时,“a>b”的值为真,为非假值),在屏幕上显示“hello”;否则,不显示“hello”。
67
52
##### 2.带else子句的if语句。该if语句的一般形式为:
68
53
69
- if ( 表达式 )
70
- {
54
+ if ( 表达式 ) {
71
55
语句组1
72
56
} else {
73
57
语句组2
74
58
}
75
59
该语句的含义是:当表达式的值为非假时,执行语句组1,而不执行语句组2;否则,即表达式的值为假时,执行语句组2,而不执行语句组1。例如:
76
60
77
- if ( a > b )
78
- {
61
+ if ( a > b ) {
79
62
console.log(“hello1”);
80
63
} else {
81
64
console.log(“hello2”);
82
65
}
83
66
该语句的作用是:若a的值大于b的值(此时“a>b”为真,为非假值),则在屏幕上显示“hello1”,而不显示“hello2”;否则,即表达式的值为假时,显示“hello2”,而不显示“hello1”。
84
67
#### switch语句
85
68
Switch语句与if语句一样,也可以实现分支选择。但if语句是判断一个表达式的值是否为假,决定是否执行某个分支;而switch语句是计算一个表达式的值,根据计算结果,从哈希表查询从哪个分支开始执行代码。Switch语句的一般形式为:
86
-
69
+
87
70
switch( 表达式 )
88
71
{
89
72
case 常量1:
@@ -101,15 +84,16 @@ switch语句的执行过程:
101
84
* 2.如果“表达式”的值与某个case后面的“常量”的值相同,则从这里开始顺序执行语句。结果switch执行有两种形式:一是遇到break语句为止;二是未遇到break语句,则程序依次执行完所有语句组。
102
85
* 3.如果“表达式”的值与任何一个case后面的“常量”的值都不相同,当有default子句时,则执行default后面的语句,如果没有default子句,则结束switch。
103
86
87
+ ** 注:与C++语言不通的是,case后可跟任意常量,不仅限于整数。**
88
+
104
89
其中break的一般形式为
105
-
90
+
106
91
break;
107
92
### 循环控制语句
108
93
#### while语句
109
94
while语句的一般形式为
110
-
111
- while( 表达式 )
112
- {
95
+
96
+ while( 表达式 ) {
113
97
循环体
114
98
}
115
99
while语句的执行过程:
@@ -119,9 +103,49 @@ while语句的执行过程:
119
103
120
104
小括号中表达式的值是否为假,决定着循环体是终止还是继续循环。因此,该表达式的值为循环条件。while循环语句的执行特点是,先判断循环条件是否成立,然后决定是否执行循环体。
121
105
当while语句的循环体只包含一条语句时,包含该循环体的“{}”可以省略。
106
+ ##### 带else的while语句
107
+
108
+ while( 表达式 ) {
109
+ 循环体
110
+ } else {
111
+ ...
112
+ }
113
+ 当while语句的循环体正常结束时将执行else语句中的代码,否则不执行。由表达式的值为假时导致的循环结束视为循环体正常结束,由break语句导致的循环体结束视为非正常结束。
114
+
115
+ 正常结束的示例:
116
+
117
+ var i = 0;
118
+ while( i++ < 3 ) {
119
+ console.log(i);
120
+ } else {
121
+ console.log("正常结束");
122
+ }
123
+
124
+ 此段代码的执行结果为:
125
+
126
+ 1
127
+ 2
128
+ 3
129
+ 正常结束
130
+
131
+ 非正常结束的示例:
132
+
133
+ var i = 0;
134
+ while( i++ < 3 ) {
135
+ console.log(i);
136
+ break;
137
+ } else {
138
+ console.log("正常结束");
139
+ }
140
+
141
+ 此段代码的执行结果为:
142
+
143
+ 1
144
+
145
+
122
146
#### for语句
123
147
在两种循环语句中,for语句最为灵活。for语句的一般形式为:
124
-
148
+
125
149
for (表达式1; 表达式2; 表达式3)
126
150
{
127
151
循环体
@@ -133,10 +157,12 @@ for语句的执行过程:
133
157
* 3.求解表达式3。
134
158
* 4.结束循环。
135
159
160
+ ** 同while语句,for语句也可以存在else分支语句,表现形式也跟while语句一致。**
161
+
136
162
### 对象的定义
137
163
138
164
对象定义的一般形式为:
139
-
165
+
140
166
{
141
167
属性名1: 属性的值,
142
168
属性名2: 属性的值,
@@ -151,7 +177,103 @@ for语句的执行过程:
151
177
age: 18
152
178
};
153
179
变量object即是一个对象,它包含两个属性。
154
- 注:当对一个对象不存在的属性赋值时会将此属性加入到对象中,例如:
155
-
180
+
181
+ ** 注:当对一个对象不存在的属性赋值时会将此属性加入到对象中,例如:**
182
+
156
183
object.sex = '男';
157
184
对象object中就会多出一个“sex”属性。
185
+ ### 函数的定义
186
+ 函数定义的一般形式为:
187
+
188
+ var fun_name = (形参列表) {
189
+ 语句组
190
+ };
191
+ 该语句的含义是:生成一个函数对象,例如:
192
+
193
+ var print = (a) {
194
+ console.log(a);
195
+ };
196
+
197
+ print(1);
198
+
199
+ 此段代码执行结果为:
200
+
201
+ 1
202
+
203
+ 该语句的作用是:定义一个函数,它有一个名为“a”的形参,执行此函数会将a的值打印到屏幕上。
204
+ 形参列表,可为空、一个、多个,多个形参之间使用“,”分割。
205
+
206
+ #### 函数值的返回
207
+ 和JavaScript类似,函数的定义中不必包含返回值的说明,直接在函数体任意位置添加 ** return** 语句即可结束函数的执行,并且返回指定的值。
208
+
209
+ ##### 单值返回
210
+
211
+ var test = (arg1, arg2) {
212
+ return arg1 + arg2;
213
+ };
214
+
215
+ console.log(test(1, 2));
216
+
217
+ 此段代码执行结果为:
218
+
219
+ 3
220
+
221
+ ##### 多值返回
222
+
223
+ var test = (arg1, arg2) {
224
+ return arg1, arg2;
225
+ };
226
+
227
+ console.log(test(1, 2));
228
+
229
+ 此段代码执行结果为:
230
+
231
+ <1, 2>
232
+
233
+ return语句在实现上其实仅支持返回一个值,能“多值返回”是因为
234
+
235
+ 表达式1, 表达式2, ..., 表达式n,...
236
+
237
+ 的写法是定义了一个“元组”类型的数据。
238
+
239
+ ### 元组
240
+ #### 定义
241
+ 元组是一种特殊的数据类型,此类型无法直接被定义,通常和函数的return语句配合使用,可通过函数创建一个元组数据,如:
242
+
243
+ var tuple = () {
244
+ return 1, 2, 3;
245
+ }();
246
+
247
+ console.log(tuple);
248
+
249
+ 此段代码的执行结果为:
250
+
251
+ <1, 2, 3>
252
+
253
+ 使用console.log打印元组类型的数据时,会使用 “<”、“>”将其包括起来,并且使用“,”分割每个元素的值。
254
+
255
+ #### 赋值操作
256
+
257
+ var tuple = () {
258
+ return 1, 2;
259
+ }();
260
+ var a, b;
261
+ a, b = tuple;
262
+ console.log(a, b);
263
+
264
+ 元组作为右值时,如果左值为 ** “表达式1, 表达式2, ...”** 的写法,则会依次将元组中的值赋值给:表达式1、表达式2、...。否则,当左值为单个表达式时,则跟普通赋值一致,将元组整体赋值给此表达式。
265
+
266
+ ### 作用域
267
+
268
+ 作用域比较明显的标识的是:"{}",如if、while、for、函数体等语句皆是使用"{}"作为作用域限制的标识。"{}"也可以不依附于if、while、for等语句单独使用,如:
269
+
270
+ {
271
+ var a = 1;
272
+ }
273
+
274
+ console.log(a);
275
+
276
+ 此段代码的执行结果为:
277
+
278
+ [Error]: undefined reference: a
279
+
0 commit comments