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

news2024/9/21 4:34:49

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

🚩 撰写作者:左手の明天

🥇 精选专栏:《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 日至今的毫秒数。

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络:TCP篇

计网tcp部分面试总结 tcp报文格式: 序列号:通过SYN传给接收端,当SYN为1,表示请求建立连接,且设置序列号初值,后面没法送一次数据,就累加数据大小,保证包有序。 确认应答号&#x…

基于C/C++的easyx图形库教程

文章目录: 一:前言 二:窗口(宽高 背景颜色 窗口标题 弹出对话框) 三:图形绘制(点 线 矩形 圆 椭圆) 四:文字(颜色 大小 背景 位置 打印 文字居中) 五&a…

动态规划(算法竞赛、蓝桥杯)--单调队列优化绿色通道

1、B站视频链接&#xff1a;E45 单调队列优化DP 绿色通道_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N5e410; int n,tim,w[N],f[N],q[N];bool check(int m){int h1,t0;for(int i1; i<n; i){while(h<t && f[q[t]]>f[i-…

鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Line)

直线绘制组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Line(value?: {width?: string | number, height?: string | number}) 从API version 9开始&#xff0c;该接…

巧用眼精星一键批量识别营业执照为结构化Excel

在现代社会&#xff0c;数字化办公已成为企业管理的重要方式之一。而在处理营业执照等票证文件时&#xff0c;如何高效准确地进行识别和管理也显得尤为重要。眼精星票据识别系统作为一款优秀的OCR识别软件&#xff0c;为用户提供了便捷快速的解决方案。接下来&#xff0c;我们将…

Java安全基础 关键概念过关

Java安全基础 关键概念汇总 文章目录 Java安全基础 关键概念汇总前置知识1.构造器this以及包的使用2.继承3.重写/ 重载 / super4.多态5.区分和equals方法6.toString的使用7.Object的概念8.static,final,代码块static代码块final 9.动态代理10.类的动态加载1)类加载器含义&#…

SpringBoot2.7集成Swagger3

Swagger2已经在17年停止维护了&#xff0c;取而代之的是 Swagger3&#xff08;基于openApi3&#xff09;&#xff0c;所以新项目要尽量使用Swagger3. Open API OpenApi是业界真正的 api 文档标准&#xff0c;其是由 Swagger 来维护的&#xff0c;并被linux列为api标准&#x…

组建公司办公网络

一 认识网络传输介质的分类 网络传输介质主要分为有线传输介质和无线传输介质两大类&#xff0c;它们在网络建设和数据传输中扮演着至关重要的角色。下面是这两类传输介质的详细分类&#xff1a; 有线传输介质 双绞线&#xff08;Twisted Pair&#xff09;&#xff1a;这是最…

作业:基于udp的tftp文件传输实例

#include <head.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <errno.h>#define PORT 69 //服务器绑定的端口号 #define IP "192.168.1.107" //服务器的IP地址int do_download(i…

从WAF到WAAP的研究

对于需要保护Web应用程序和API的企业来说&#xff0c;从WAF到WAAP的转变已成为一种必然趋势。采用WAAP平台可以更为全面和高效地保护Web应用程序和API的安全&#xff0c;同时避免了高昂的维护成本和攻击绕过WAF的风险。 网络安全领域的发展趋势是从WAF到WAAP的转变。WAF作为传…

关系数据库标准语言SQL

1.SQL概述 1.1基本表&#xff08;Base table&#xff09; 实际存储在数据库中的表SQL中一个关系就对应一个基本表基本表可以有若干个索引基本表的集合组成关系模式&#xff0c;即全局概念模式&#xff08;数据的整体逻辑结构&#xff09; 1.2 存储文件 存储文件和相关索引组…

android 顺滑滑动嵌套布局

1. 背景 最近项目中用到了上面的布局&#xff0c;于是使用了scrollviewrecycleview&#xff0c;为了自适应高度&#xff0c;重写了recycleview&#xff0c;实现了高度自适应&#xff1a; public class CustomRecyclerView extends RecyclerView {public CustomRecyclerView(Non…

【氮化镓】利用Ga2O3缓冲层改善SiC衬底AlN/GaN/AlGaN HEMT器件性能

Micro and Nanostructures 189 (2024) 207815文献于阅读总结。 本文是关于使用SiC衬底AlN/GaN/AlGaN高电子迁移率晶体管&#xff08;HEMT&#xff09;的研究&#xff0c;特别是探讨了不同缓冲层对器件性能的影响&#xff0c;以应用于高速射频&#xff08;RF&#xff09;应用。…

MySQL—基本操作

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

文物管理系统|基于SSM框架+ Mysql+Java+ B/S结构的文物管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

GitLab/Github从头开始配置秘钥

1、下载git安装包 CNPM Binaries Mirrorhttps://registry.npmmirror.com/binary.html?pathgit-for-windows/ 拉到页面最底部选择 点进文件夹下载32位或者64位的版本&#xff0c;我的是64位就选择64的版本进行安装 2、傻瓜式安装 3、在相应的文件夹右键选择 UserName为你的用…

青海200MW光伏项目 35kV开关站图像监控及安全警示系统

一、背景 随着我国新能源产业的快速发展&#xff0c;光伏发电作为清洁能源的重要组成部分&#xff0c;得到了国家政策的大力扶持。青海作为我国光伏资源丰富地区&#xff0c;吸引了众多光伏项目的投资建设。在此背景下&#xff0c;为提高光伏发电项目的运行效率和安全性能&…

深度学习实战模拟——softmax回归(图像识别并分类)

目录 1、数据集&#xff1a; 2、完整代码 1、数据集&#xff1a; 1.1 Fashion-MNIST是一个服装分类数据集&#xff0c;由10个类别的图像组成&#xff0c;分别为t-shirt&#xff08;T恤&#xff09;、trouser&#xff08;裤子&#xff09;、pullover&#xff08;套衫&#xf…

苹果计划与谷歌合作使用Gemini AI技术,提升iPhone功能,同时探索与OpenAI合作可能性

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Shape)

绘制组件的父组件&#xff0c;父组件中会描述所有绘制组件均支持的通用属性。 1、绘制组件使用Shape作为父组件&#xff0c;实现类似SVG的效果。 2、绘制组件单独使用&#xff0c;用于在页面上绘制指定的图形。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有…