小程序云开发(十六):JavaScript基础

🔗 运行环境:小程序云开发

🚩 撰写作者:左手の明天

🥇 精选专栏:《python》

🔥  推荐专栏:《算法研究》

🔐#### 防伪水印——左手の明天 ####🔐

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天更新小程序云开发💗

📆  最近更新:2024 年 03 月 19 日,左手の明天的第 322 篇原创博客

📚 更新于专栏:小程序开发

🔐#### 防伪水印——左手の明天 ####🔐


JavaScript是目前世界上最流行的编程语言之一,它也是小程序云开发最重要的基础语言。要做出一个功能复杂的小程序,除了需要掌握JavaScript的基本语法,还要了解如何使用JavaScript来操作小程序(通过API接口)。

1.1 JavaScript基础入门

我们可以使用用微信开发者工具的控制台来快速学习JavaScript。打开微信开发者工具,在调试器里可以看到Console、Sources、Network、Appdata、Wxml等标签,这些都是调试器的功能模块。 而控制台Console除了可以显示小程序的错误信息外,还可以用于输入和调试代码。

1.1.1 数学运算

JavaScript的算数运算符和我们常见的数学运算符没有太大区别,+加、-减、乘*、除/、指数**,我们可以在控制台Console的>后面逐行输入并按Enter执行以下代码:

136+384; //加法
(110/0.5+537-100)*2; //加减乘除
2**5; //指数运算符

//为JavaScript的注释,可以不用输入,输入也不会有影响;JavaScript的语句之间用英文字符的分号;分隔。

1.1.2 Console.log打印日志

在控制台输入四则运算可以直接得到结果,是因为调用了console.log()函数,我们可以把上面的四则运算在控制台里使用 console.log(321*3)打印出来,除了四则运算,console.log()还可以打印字符串String,比如:

console.log("童鞋,欢迎开始JavaScript的学习~nJavaScript是一门非常流行的编程语言,只要是有浏览器的地方就少不了JavaScript;n网页、小程序、甚至App、桌面应用等都少不了JavaScript;nJavaScript玩得溜的人我们可以称其为前端开发工程师;n前端开发工程师是需求量极大的岗位n");
console.log('%c欢迎关注小程序的云开发:https://www.zhihu.com/org/teng-xun-yun-kai-fa-tcb (用云开发可以更快速学好前端开发)','color: red' );

在实际应用中,总有一些具有特殊含义的字符无法直接输入,比如换行 n、Tab键 t、回车 r、反斜杠 ,这些我们称之为转义字符。JavaScript中单引号和双引号都表示字符串。如果字符串中存在双引号,建议最外层用单引号;如果字符串中存在单引号,建议最外层用双引号。如何在控制台给打印的字体添加颜色等,大家可以自行去研究。

1.1.3 打印数组Array

我们可以在控制台使用console.log()打印数组,打印出来之后,结果的前面会有数字显示数组的长度length,以及可以展开。

console.log(["肖申克的救赎","霸王别姬","这个杀手不太冷","阿甘正传","美丽人生"])

在展开的结果里,我们可以看到数组的索引index,以及索引index对应的值(比如: 1: "霸王别姬")、该数组的长度length,以及数组的方法(在__proto__里可以看到,比如concat、push、shift、slice、toString等)。

我们也可以通过索引值打印数组里的单一数据,也就是通过指定数组名以及索引值,来访问某个特定的元素:

console.log(["肖申克的救赎","霸王别姬","这个杀手不太冷","阿甘正传","美丽人生"][3])

1.1.4 打印对象Object

在控制台里使用console.log()函数打印一个对象Object,对象的结果仍然可以通过左侧的三角展开可以看到对象的属性以及属性对应的值。

console.log({name: "霸王别姬",img: "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910813120.webp",desc: "风华绝代。"})

我们可以通过点表示法来访问该属性获取属性对应的值:

console.log({name: "霸王别姬",img: "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910813120.webp",desc: "风华绝代。"}.desc)

当我们打印数组的某一项和通过点表示法获取对象某个属性对应的值的时候,有没有觉得打印的内容太长?这个时候我们可以把数组、对象赋值给一个变量,类似于数学里的y=ax+b,就可以大大简化代码了。

1.1.5 变量与赋值

JavaScript可以使用let语句声明变量,使用等号=可以给变量赋值,等号=左侧为变量名,右侧为给该变量赋的值,变量的值可以是任何数据类型。JavaScript常见的数据类型有:数值(Number)、字符串(String)、布尔值(Boolean)、对象(Object)、函数(Function)等。

1、将数据赋值给变量

比如我们可以在控制台里,将上面的数组和对象赋值给一个变量,然后打印该变量,先来打印数组:

let movielist=["肖申克的救赎","霸王别姬","这个杀手不太冷","阿甘正传","美丽人生"]
console.log(movielist)
console.log(movielist[2])

再来看打印对象的情况:

let movie={name: "霸王别姬",img: "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910813120.webp",desc: "风华绝代。"}
console.log(movie)
console.log(movie.name)

通过将复杂的数据信息(数组、对象)赋值给一个变量,代码得到了大大的简化,可以深刻了解到变量是用于存储信息的”容器”

2、变量的冲突与覆盖

比如我们在控制台Console里使用let声明一个变量username,然后将username打印出来:

let username="小明"
console.log(username)

但是如果再次使用let声明username,并给username赋值时就会出现变量名冲突的报错,比如再在控制台里输入以下代码并按Enter执行,看会报什么错?

let username="小丸子"

也就是说声明了一个变量名之后,就不能再次声明这个变量名啦。但是我们却可以给该变量重新赋值,比如:

username="小军"
console.log(username)

我们发现给该变量重新赋值之后,变量的值就被覆盖了。所以let 变量名=值,相当于进行了两步操作,第一步是声明变量名,第二步是给变量赋值,具体可以通过控制台执行下面的代码来理解。

let school  //声明变量
school="清华"   //将字符串String"清华"赋值给变量
console.log(school)  //打印变量
school=["清华","北大","上交","复旦","浙大","南大","中科大"] //给变量赋值新的数据类型新的数据
console.log(school)  //打印变量

通过使用控制台实战打印具体的信息,我们就会对声明变量、赋值、覆盖(修改变量的值)有了更深的了解。

这个undefined是console.log()这个函数的返回值,每个函数都有返回值,如果函数没有提供返回值,会返回 undefined。

1.1.6 操作数组

在前面我们已经说过,数组是一个有序的列表。下面这个数组是豆瓣电影的top5:

["肖申克的救赎","霸王别姬","这个杀手不太冷","阿甘正传","美丽人生"]

但是有时候我们需要操作一下该数组,比如想增加5项数据,变成top10,比如数据太多,只想要top3等等,这个时候就需要对数组进行操作了。要对数组进行操作,就有操作的方法。前面我们已经将给数组赋值给了movielist,下面我们可以直接使用该变量。也可以先在控制台再赋值一下。

movielist=["肖申克的救赎","霸王别姬","这个杀手不太冷","阿甘正传","美丽人生"]
1、分隔符join方法

join方法将数组元素拼接为字符串,以分隔符分割,默认是逗号,分割。

console.log(movielist.join("、"))

2、添加数组push方法

push()方法向数组的末尾添加一个或更多元素,并返回新数组的长度

console.log(movielist.push("千与千寻","泰坦尼克号","辛德勒的名单","盗梦空间","忠犬八公的故事"))

这里返回的是新数组的长度,那我们打印一下新数组看具体包含了哪些值,push方法在原来的数组后面(不是前面)新增了5个值(不是覆盖,重新赋值)。

console.log(movielist)
3、移除最后一项pop方法

pop() 从数组末尾移除最后一项,并返回移除的项的值:

console.log(movielist.pop())

返回的是数组的最后一项,我们再来打印movielist,看看有什么变化:

console.log(movielist)

以上通过一些实际的案例让大家了解如何使用控制台打印这种实战方式来了解了一些数组具体的操作方法,数组的操作方法还有很多,大家可以去查阅技术文档。

技术文档:MDN数组Array

如果说小程序的开发离不开小程序的官方技术文档,那MDN则是每一个前端开发工程师都必须经常去翻阅的技术文档。打上MDN数组Array,在页面的左侧菜单里,我们可以看到Array有着数十种方法,而这些方法,都是我们之前打印了数组之后在__proto__里看到的方法。关于数组的prototype,学有余力的人可以去阅读MDN1 Array.Prototype

1.1.7 操作对象

我们可以用点表示法访问对象的属性,通过给该属性赋值就能够添加和修改对象的属性的值了。在之前我们声明过一个对象movie:

movie={name: "霸王别姬",img: "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910813120.webp",desc: "风华绝代。"}

1、给对象添加属性

比如我们给霸王别姬增加英文名的属性,直接在控制台里输入以下代码:

movie.englishname="Farewell My Concubine"

然后再在控制台打印movie看看movie是否有了englishname的属性

console.log(movie)
2、删除对象的某个属性

比如我们想删除movie的img属性,可以通过delete 方法来删除

delete movie.img

然后再在控制台打印movie看看movie的img属性是否被删除了。

console.log(movie)
3、更新对象的某个属性

比如我们想更新movie的desc属性,可以通过重新赋值的方式来更新

movie.desc="人生如戏。"

然后再在控制台打印movie看看movie的desc属性是否有了变化。

console.log(movie)

1.1.8 常量

在前面我们知道变量的值可以通过重新赋值的方式来改变,但是有些数据我们希望是固定的(写死,不会经常改变),这个时候可以使用const声明创建一个值的只读引用。const声明和let声明挺像的。

比如开发小程序的时候,我们会确定小程序的色系、颜色等,使用const声明,以后直接调用这个常量,这样就不用记那么多复杂的参数,以后想全网改样式,直接改const的内容即可。比如:

const defaultStyle = {
  color: '#7A7E83',
  selectedColor: '#3cc51f',
  backgroundColor: '#ffffff',
}

1.1.9 字符串的操作

前面我们已经知道字符串是JavaScript的数据类型之一,那我们可以怎么来操作字符串呢?下面我们就来结合MDN技术文档来学习。MDN文档是前端最为依赖的技术文档,我们要像查词典一样来学习如何使用它。

技术文档:MDN技术文档之JavaScript标准库之String

首先我们在main.js里输入以下代码,然后执行,在Console控制台查看效果:

let lesson="云开发技术训练营";
let enname="CloudBase Camp"
console.log(lesson.length);  //返回字符串的长度
console.log(lesson[4]);  //返回在指定位置的字符
console.log(lesson.charAt(4));   //返回在指定位置的字符
console.log(lesson.substring(3,6));  //从索引3开始到6(不包括6)
console.log(lesson.substring(4));  //从索引4开始到结束
console.log(enname.toLowerCase()); //把一个字符串全部变为小写:
console.log(enname.toUpperCase());  //把一个字符串全部变为大写:
console.log(enname.indexOf('oud')); //搜索指定字符串出现的位置:
console.log(enname.concat(lesson)); //连接两个字符串
console.log(lesson.slice(4)); //提取字符串的某个部分,并以新的字符串返回被提取的部分

然后打开技术文档,在技术文档左侧菜单的属性方法里,找到操作字符串用了哪些属性和方法,通过翻阅技术文档既加深对字符串的每个操作的理解,也知道该如何查阅技术文档。

字符串怎么有这么多属性和方法?多就对了,正是因为多,所以我们不能用传统的死记硬背来学习技术。技术文档怎么有这么多新词汇我见都没有见过,完全看不懂?你不需要全部都懂,就像我们不需要懂词典里的所有单词和语法一样。即使是GRE满分高手也不能认全所有单词,而通常6级单词就已经够用了,技术也是一样的道理。

1.1.10 Math对象

Math是一个内置对象, 它具有数学常数和函数的属性和方法,但**它不是一个函数对象。**大家可以先在控制台实战然后再来了解这句话啊含义。

技术文档: Math对象MDN文档

在开发者工具的控制台console里输入以下代码,根据得到的结果来弄清楚每个函数的意思。

let x=3,y=4,z=5.001,a=-3,b=-4,c=-5;
console.log(Math.abs(b)); //返回b的绝对值
console.log(Math.round(z));//返回z四舍五入后的整数
console.log(Math.pow(x,y)) //返回x的y次幂
console.log(Math.max(x,y,z,a,b,c)); //返回x,y,z,a,b,c的最大值
console.log(Math.min(x,y,z,a,b,c));//返回x,y,z,a,b,c的最小值
console.log(Math.sign(a));  //返回a是正数还是负数
console.log(Math.hypot(x,y));  //返回所有x,y的平方和的平方根 
console.log(Math.PI);  //返回一个圆的周长与直径的比例,约3.1415

我们打开技术文档,在左侧菜单找一下Math对象的属性有哪些,Math对象的方法又有哪些?大致感受一下属性和方法到底是什么意思。

注意,在别的开发语言里面,我们想获取一个数的绝对值可以直接调用abs(x)函数即可,而JavaScript却是Math.abs(x),这是因为前面说的Math不是函数(函数对象),而是一个对象。

1.1.11 Date对象

Date 对象用于处理日期和时间。时间有年、月、日、星期、小时、分钟、秒、毫秒以及时区的概念,因此Date对象属性和方法也显得比较多。

技术文档:Date对象MDN文档

let now = new Date();  //返回当日的日期和时间。
console.log(now); 
console.log(now.getFullYear()); //从 Date 对象以四位数字返回年份。
console.log(now.getMonth());  //从 Date 对象返回月份 (0 ~ 11)。
console.log(now.getDate());  //从 Date 对象返回一个月中的某一天 (1 ~ 31)。
console.log(now.getDay());  //从 Date 对象返回一周中的某一天 (0 ~ 6)。
console.log(now.getHours());  //返回 Date 对象的小时 (0 ~ 23)。
console.log(now.getMinutes());  //返回 Date 对象的分钟 (0 ~ 59)。
console.log(now.getSeconds());  //返回 Date 对象的秒数 (0 ~ 59)。
console.log(now.getMilliseconds());  //返回 Date 对象的毫秒(0 ~ 999)。
console.log(now.getTime());  //返回 1970 年 1 月 1 日至今的毫秒数。

这些内容都是非常重要的基础,在以后的应用开发中有着非常重要的应用。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/468186.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Auto-DataProcessing:一组让制作数据集变轻松的脚本

前言 最近跟同学参加了个比赛,我负责Object-Detection的技术实现,需要从网上扒大量的数据(主办方每种识别物就给了一张demo🤣),发现数据准备是一个真的是一个非常重要但又耗时耗力的过程。对我来说,给我一类待识别的标…

蓝桥杯-Sticks-DFS搜索

题目 样例输出是 6 5 题目中给错了,不知道什么时候会改。 思路 --剪枝,否则时间复杂度和空间复杂度过大,会超时。 --注意有多组测试样例时,需要将bool数组重新赋值为false。 --函数类型不是void,return语句不能省…

Selenium 自动化 —— Selenium IDE录制、回放、导出Java源码

Hello Selenium 示例 之前我们在专栏的第一篇文章中演示了使用使用Selenium进行百度搜索的Hello world示例。 代码不复杂非常简单: public static void main(String[] args) {WebDriver driver null;try {// 设置Chrome驱动的路径 // System.setPro…

UnityShader(十八) 透明度测试

上代码: Shader "Shader入门/透明度效果/AlphaTestShader" {Properties{_MainTex ("Texture", 2D) "white" {}_CutOff("CutOff",Range(0,1))1}SubShader{Tags { "Queue""AlphaTest" "IgnorePro…

SpringBoot中使用MybatisX插件的详细过程

MybatisX 是一款针对 MyBatis 框架的 IntelliJ IDEA 的快速开发插件,旨在提高 MyBatis 开发效率的工具。它提供了一系列功能来简化 MyBatis 的配置和使用,包括 XML 文件的智能补全、快速跳转、代码生成等功能。 实现细节 (1)在I…

Milvus向量数据库检索

官方文档:https://milvus.io/docs/search.md   本节介绍如何使用 Milvus 搜索实体。   Milvus 中的向量相似度搜索会计算查询向量与具有指定相似度度量的集合中的向量之间的距离,并返回最相似的结果。您可以通过指定过滤标量字段或主键字段的布尔表达…

最细致最简单的 Arm 架构搭建 Harbor

更好的阅读体验:点这里 ( www.doubibiji.com ) ARM离线版本安装 官方提供了一个 arm 版本,但是好久都没更新了,地址:https://github.com/goharbor/harbor-arm 。 也不知道为什么不更新,我看…

MySQL—基本操作

1.创建数据库 ①CREATE DATABASE schooldb; --不进行检查和设置默认字符集 ②CREATE DATABASE IF NOT EXISTS schooldb CHARSET utf8; --进行检查和设置默认字符集 CREATE DATABASE 创建数据库 IF NOT EXISTS 意为当前数据库不存在 CHARSET 意为设置数据库字符集…

Windows server 2008 R2 在VMware虚拟机上的安装

Windows server 2008 R2 在VMware虚拟机上的安装 准备工作VMware 新建并配置虚拟机安装和启动Windows server 2008 R2 准备工作 Windows server 2008 R2 ISO镜像的下载:Windows server 2008 R2 ISO VMware 新建并配置虚拟机 第一步,点击新建虚拟机 第…

语音控制模块_雷龙发展

一 硬件原理 1,串口 uart串口控制模式,即异步传送收发器,通过其完成语音控制。 发送uart将来自cpu等控制设备的并行数据转换为串行形式,并将其串行发送到接收uart,接收uart然后将串行数据转换为接收数据接收设备的并行…

【地图】腾讯地图 - InfoWindow 自定义信息窗口内容时,内容 html 嵌套混乱问题

目录 需求描述问题问题代码页面展示 解决原因解决办法解决代码页面展示 代码汇总注 需求描述 腾讯地图上画点位,点击点位展示弹框信息 问题 问题代码 // 打开弹框 openInfoWindow(position, content) {this.infoWindow new TMap.InfoWindow({map: this.map,posit…

Elasticsearch:全文搜索的利器

1. 简介 Elasticsearch是一个基于Lucene的分布式搜索引擎,能够支持准实时的数据检索NRT(near real-time),支持海量数据的处理,包括结构化和非结构化数据,提供强大的全文搜索能力,但是ES不仅仅是一个全文搜索引擎,他能…

如何利用IP地址分析风险和保障网络安全

随着网络攻击的不断增加和演变,保障网络安全已经成为了企业和组织不可忽视的重要任务。在这样的背景下,利用IP地址分析风险和建立IP风险画像标签成为了一种有效的手段。本文将深入探讨IP风险画像标签的作用以及如何利用它来保障网络安全。 IP风险画像查…

[LLM]大语言模型文本生成—解码策略(Top-k Top-p Temperature)

{"top_k": 5,"temperature": 0.8,"num_beams": 1,"top_p": 0.75,"repetition_penalty": 1.5,"max_tokens": 30000,"message": [{"content": "你好","role": "user&…

OpenCV实现OCR图片文本检测

一、操作步骤 把左边这样的图片,通过仿射变换转换成右边那样的图片。 然后再通过pytesseract读取图片内容得到图片中的文本就好了。 需要使用到: 仿射变换ocr识别 注:本文使用现成图片,轮廓检测较为明显,若是自己拍…

CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记

CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记 文章目录 CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记前记获取键值或下标的方式获取属性的方式 Level 1 no wafLevel 2 bl[\{\{]Level 3 no waf and blindLevel 4 bl[[, ]]获取键值或下标 Level 5 bl[\, "]Level 6 bl[_]Level …

搭建 es 集群

一、VMware准备机器 首先准备三台机器 这里我直接使用 VMware 构建三个虚拟机 都是基于 CentOS7 然后创建新用户 部署 es 需要单独创建一个用户,我这里在构建虚拟机的时候直接创建好了 然后将安装包上传 可以使用 rz 命令上传,也可以使用工具上传 工…

Linux网络命令介绍30+

目录 一、网络命令 1. ifconfig 2. ip 3. traceroute 4. ping 5. route 6. netstat 7. ss 8. dig 9. arp 10. iwconfig 11. nslookup 12. host 13. whois 14. tracepath 15. curl 16. hostname 17. wget 18. mtr 19. iftop 20. iotop 21. tcpdump 22. i…

jenkins Pipeline接入mysql

背景: jenkin pipeline进化过程如下: Jenkins Pipeline 脚本优化实践:从繁琐到简洁 >>>>> Jenkins Pipeline脚本优化:为Kubernetes应用部署增加状态检测>>>>>> 使用Jenkins和单个模板部署多个K…

Nadaraya-Watson核回归

目录 基本原理 ​编辑 核函数的选择 带宽的选择 特点 应用 与注意力机制的关系 参考内容 在统计学中,核回归是一种估计随机变量的条件期望的非参数技术。目标是找到一对随机变量 X 和 Y 之间的非线性关系。 在任何非参数回归中,变量 Y 相对于变量…