JavaScript强化
前端小组第三次培训2023/11/4
基本格式
JavaScript不同于Python语言,它有括号,每行语句后要加分号。
注:所有的符号一律用英文格式的符号,中文格式的符号会报错
如下是实现相同功能两者代码的区别:
def bubble_sort(nums: list[int]): |
function bubbleSort(nums) { |
Python主要靠缩进来控制代码结构和作用域,JavaScript则通过大括号{}控制。
对于括号,如() [] {},都要成对出现。不然会报语法错误。
{}代码块与作用域
每个变量/常量都有其作用域与生命周期
页面全局变量
页面全局变量即在页面函数Page()中传入的页面对象中的data对象中的变量,它们的作用域为当前页面,也就是说只能在本页面中可以访问到,除非将其作为页面参数传递到下一页面,生命周期伴随此页面的生成与销毁(切换跳转到另一个页面并不算页面的销毁,页面的切换与跳转依靠栈实现,所有的数据仍在栈中)。
关于Page()函数该传入什么参数,详见开发文档框架接口 / 页面 / Page (qq.com)
示例代码
Page({ |
代码解释
代码中,函数Page()中()包裹的{}即为页面对象,页面对象包含了页面全局变量data对象与名为voidfunc的空函数,各字段用,隔开,data对象中包含了名为num值为7410、名为count值为0、名为str值为A string.的三个页面全局变量,且各字段用,隔开。
局部变量
在函数代码块中声明的变量我们称其为局部变量,局部变量的生命周期由声明方式决定,作用域由代码块{}决定。
函数体
function() { //此{}内即为函数体 |
var与let
由var关键字声明的变量在本函数体内可见。
由let关键字声明的变量在本代码块,即{}内可见。
示例代码
function() { |
运行结果
10 |
打印a、b、d正常,但打印c报错(引用错误,c未定义),因为let关键字声明的变量只在if后的{}内可见,且生命周期只在{}内。
同时,上级代码块{}中声明的变量在下级代码块{}中可见,上述代码中if代码块中仍可打印a、b。
对象(Object)
对象的概念详见JS入门与函数、数据绑定 | whaleghostの小窝的对象部分,此处不再赘述。
对象由{}进行包裹,但此处的{}并不算代码块,代码块一般指函数/方法中的{}。
对象内包含若干字段,字段后接:其后跟值or函数/方法,且每个字段声明结束后都要加,。
示例代码
Page({ //匿名对象 |
this—当前对象的引用
数组(Array)的基本操作
数组的概念详见JS入门与函数、数据绑定 | whaleghostの小窝的数组部分,此处不再赘述。
数组由[]包裹,各个元素间用,隔开。
数组元素访问
数组的下标从0开始,0表示第1个元素,1表示第2个元素,以此类推。
| 下标 | 位序 |
|---|---|
| 0 | 1 |
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |
| 4 | 5 |
如果要访问第2个元素,则参考以下代码
示例代码
let arr = [1,"Bonjour",5,true,3.14]; |
运行结果
Bonjour |
常见内置函数/方法
push()
将一个或多个元素添加到数组的末尾,并返回新数组的长度。
示例代码
let arr = [1,2,3,4]; |
运行结果
[1,2,3,4,5] |
pop()
删除数组的最后一个元素,并返回被删除的元素。
示例代码
let arr = [1,2,3,4]; |
运行结果
[1,2,3] |
unshift()
将一个或多个元素添加到数组的开头,并返回新数组的长度。
注:不推荐使用,时间复杂度为O(n),性能开销极大。
示例代码
let arr = [1,2,3,4]; |
运行结果
[0,1,2,3,4] |
shift()
删除数组的第一个元素,并返回被删除的元素。
注:不推荐使用,时间复杂度为O(n),性能开销极大。
示例代码
let arr = [1,2,3,4]; |
运行结果
[2,3,4] |

