[TOC]
## 1.变量
```
// 声明变量
var mood = "happy";
var age = 33;
// 变量名是区分大小写的,以下是两个不同的变量。
var mood = "happy";
var Mood= "happy";
// 变量名的格式,
// 变量名允许包含字母、数字、美元符号和下划线
var my_mood = "happy";
var myMood = "happy";
```
## 2.数据类型
(1) 字符串
```
// 字符串有零个或多个字符
// 单引号、双引号都可以,且成对出现。
var mood = "happy";
var mood = 'happy';
// 引号嵌套,如果字符串包含单引号,就使用双引号,反之亦然;否则进行转义。
var mood = "don't ask";
var mood = 'don\'t ask';
```
详见[字符串操作](%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%93%8D%E4%BD%9C.md)
(2) 数值
```
var age = 23;
// 浮点数,允许带小数点的数值,
var age = 23.5;
```
(3) 布尔值
```
var sleeping = true;
var hungry = false;
```
(4) 数组
```
// 数组表示一个值的集合,集合中的每个值都是这个数组的元素。
// 声明数组时,给定长度
var beatles = Array(4);
// 也可以不给定长度;
var city = Arrary();
// 向数组中填充元素,下标从0开始。
var city = Arrary(3);
city[0] = "Beijing";
city[1] = "Shanghai";
city[2] = "Nanjing";
```
详见[数组操作](%E6%95%B0%E7%BB%84%E6%93%8D%E4%BD%9C.md)
(5) 对象
```
// 创建对象
var student = Object();
student.name = "Alice";
student.age = 21;
student.city = "Shanghai";
// 还可以这样创建
var student = { name: "alice", age: 21, city: "Shanghai" };
```
(6) 算术操作符
| 运算符 | 描述 | 赋值运算符 | 描述 |
| --- | --- |--- | --- |
| + | 加法 | = | 赋值,将等号右边的值赋给左边的变量 |
| - | 减法 | +=| 计算后再赋值|
| * | 乘法 | -=| 计算后再赋值|
| / | 除法 | *=| 计算后再赋值|
| % | 取模 | /=| 计算后再赋值|
| ++ | 自增 | %/| 计算后再赋值|
| -- | 自减 |
| ** | 幂 |
```
// + 连接字符串
str1 = "Hello";
str2 = "World";
str3 = str1 + str2;
alert(str3);
// 输出:
str3 = "HelloWorld";
```
## 3.条件语句
```
// 语法, 当“条件”满足时,即为True时,才会执行“语句”
if (条件) {
语句;
};
// 举例:不满足条件时执行else下的语句。
if (1 > 2) {
alter("The world has gone mad!");
} else {
alter("All is well with the world");
};
```
比较运算符
| 运算符 | 描述 |
| --- | --- |
| == | 等于 |
| === | 绝对等于(值和类型都相等) |
| != | 不等于 |
| !== | 不绝对等于(值和类型有一个不相等,或者都不相等) |
| > | 大于 |
| < | 小于 |
| >= | 大于或等于 |
| <= | 小于或等于 |
逻辑运算符
| 运算符 | 描述 |
| --- | --- |
| && | 与 |
| \|\| | 或 |
| ! | 非 |
## 4.循环语句
while循环
```
// 条件必须为True
while(条件) {
语句
};
```
do-while 循环
```
// 执行循环语句之后,进行条件判断
var count = 1;
do {
alert(count);
count++;
} while(count < 11);
```
for 循环
```
// 示例1:
for (var count = 1; count < 11; count++) {
alert(count);
}
// 示例2:
const userNames = ["Alice", "Bob", "Cindy"];
for (const userName of userNames) {
console.log(userName);
}
// 输出
Alice
Bob
Cindy
// 遍历数组
var beatles = Array("John", "Paul", "George", "Ringo");
for(var count = 0; count < beatles.length; count++) {
alert(beatles[count])
}
```
## 5.函数
```
// 语法
function 函数名(参数) {
语句;
}
// 示例:
function shout() {
var beatles = Array("John", "Paul", "George", "Ringo");
for(var count = 0; count < beatles.length; count++) {
alert(beatles[count]);
}
};
shout();
// 传递参数
function total(num1, num2) {
var count = num1+num2;
alert(count);
}
total(1, 2);
```
## 补充:变量的作用域
全局变量:可以在脚本的任何位置被引用
局部变量:只存在于声明它的函数的内部,作用于特定的函数。
## 6.对象
**对象**是一种非常重要的数据类型,包含`属性`和`方法`。
`属性`是隶属于某个特定对象的变量;
`方式`是只有某个特定对象才能调用的函数。
```
// 使用new关键字来创建对象实例
var alice = new Student;
```
**内建对象**
数组其实就是内建对象
```
var beatles = new Array();
beatles.length;
var num = 7.561;
var num = Math.round(num);
alert(num);
var current_date = new Date();
var today = current_date.getDay();
```
**宿主对象**
由浏览器提供的预定义的对象被称为**宿主对象**。
宿主对象包括Form、Image和Element等。
## DOM操作
### getElementById
```
// 参数为获取元素的id属性的值
document.getElementById(id)
// typeof 返回操作对象的类型
<div id="container"></div>
<script>
alert(typeof document.getElementById("container"));
// 获取元素对象的属性和方法。
console.dir(object);
</script>
```
### getElementsByTagName
```
// 返回一个对象数组,参数为标签名
document.getElementsByTagName(tag)
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<script>
alert(document.getElementsByTagName("li").length);
alert(typeof document.getElementsByTagName("li"));
</script>
```
### getElementsByClassName
```
// 参数为获取元素的class属性的值
document.getElementByClassName(class)
// typeof 返回操作对象的类型
<div class="container"></div>
<script>
alert(typeof document.getElementsByClassName("container"));
</script>
```
### getAttribute
```
// 查询属性,只能通过元素节点对象来调用。
object.getAttribute(attribute)
```
### setAttribute
```
// 设置属性,只能通过元素节点对象来调用。
object.setAttribute(attribute, value)
```
### querySelector
```
// 参数为选择器,返回第一个元素对象
document.querySelector("选择器");
```
### querySelectorAll
```
// 参数为选择器,返回元素对象集合
document.querySelectorAll("选择器");
```
### 获取body和html标签
```
// 获取body标签
document.body;
// 获取html标签
document.documentElement;
```
## 7.类和构造函数
~~~
class Person {
name;
constructor(name) {
this.name = name;
}
introduceSelf() {
console.log(`Hi! I'm ${this.name}`);
}
}
const alice = new Person("Alice");
alice.introduceSelf();
// 一个name属性
// 一个需要name参数的构造函数
// 一个introduceSelf方法
// 省略构造函数
class Animal {
sleep() {
console.log("zzzzzz");
}
}
const dog = new Animal();
dog.sleep();
~~~
- Golang
- 基础知识
- 基本数据类型
- 运算符
- 变量&常量
- 流程控制
- 数组
- 切片
- string操作
- Map及实现原理
- Go其他
- CLI命令
- Golang内置类型和函数
- init函数和main函数
- 网络编程
- 互联网协议
- socket编程
- 单元测试
- 并发编程
- channel
- 优雅地关闭channel
- Mutex
- GMP原理与调度
- Go Web
- HTTP Server
- gin框架
- 快速入门
- HTML渲染
- JSONP
- Multipart/Urlencoded绑定
- PureJSON
- gin路由
- beego框架
- Bee工具安装
- 配置模块
- Web模块
- 路由
- 数据操作
- Go操作Mysql数据库
- Go操作redis
- mongo-driver
- sqlx库
- 操作etcd
- msgpack
- 网络爬虫
- 获取页面
- 标准库
- IO操作
- 文件操作
- fmt
- 格式化输出
- flag
- log
- time
- strconv
- template
- os
- sync.Mutex
- Context
- 第三方库
- zap库
- viper
- validator参数校验
- GORM
- 基础
- CRUD接口
- INI
- GoFrame
- 快速开始
- 微服务
- go-kit
- gRPC
- Protocol Buffers 语法指南
- go-zero
- 相关名词解释
- 数据结构和算法
- 基础知识
- 链表
- Golang GUI
- fyne基础
- 显示时间
- RabbitMQ-Go
- centos7 安装rabbitmq-server
- RabbitMQ介绍
- 工作队列
- Go设计模式
- 设计模式的分类
- 简单工厂模式
- golang自举编译
- 了解sync.Once
- 知识碎片
- 常见问题
- 开源项目
- Anaconda
- 介绍、使用教程
- Python
- Python基础知识
- Python之禅
- 变量和类型
- 流程控制
- Python运维
- 基础语法
- Python内置工具
- 包管理工具pip
- 小爬虫笔记
- I/O操作
- requests库
- requests基本使用
- BeautifulSoup库
- BeautifulSoup基本使用
- 数据可视化
- Django
- Django起步
- OpenCV
- OpenCV入门
- 前端
- HTML
- CSS
- CSS权重计算
- Javascript
- 基础
- JS基础知识
- 监听事件
- 字符串操作
- 数组操作
- 输入输出
- 定时器
- 样式操作
- 获取url参数
- Typescript
- Pick 与 Omit TS内置类型
- Vue.js
- Vue.js介绍
- Vue.js基础
- Vue指令
- v-model
- v-for
- 指令修饰符
- Q&A
- 命令
- Vue3
- node.js
- node.js基础
- npm遇到的问题
- 相关工具安装
- nvm使用教程
- 工程化webpack
- Linux
- Linux基础
- 符号链接
- Shell
- 脚本执行中的问题
- tcpdump
- 正则表达式
- Elasticsearch
- Docker
- Docker的基础概念与操作
- Docker 安装
- 容器技术原理
- Docker核心概念
- Docker基本操作
- 镜像相关操作
- 容器相关操作
- 镜像加速器
- Dockerfile
- Docker所遇问题
- ansible
- k8s
- 安装工具
- kubectl
- Git
- gitlab
- gitlab备份与恢复
- gitlab基本使用
- git使用
- git常用命令
- git提交问题
- git提交规范
- 数据库
- MySQL
- MySQL介绍
- mariadb安装
- 主主复制
- 数据库问题集结
- 开启binlog
- MySQL常用命令
- SQL总结
- MySQL性能优化系列
- 第一章 初始化安装和简单安全加固
- MySQL配置模板
- Redis
- Redis简单使用
- Redis常见问题
- Redis集群
- Redis Cluster概述
- 数据分布
- 搭建集群
- MongoDB
- mongodb分片
- TiDB
- 单机模拟部署生产环境集群
- 服务器
- CentOS
- 配置阿里云的yum源和epel源
- centos7 实现NFS文件共享
- rsync
- centos7 源码编译rsync
- rsync实现文件同步
- 添加删除swap分区
- 清除buff/cache
- 配置ntp时间同步
- centos7安装pip
- centos7虚拟机启动报xfs错误
- centos7常用命令
- centos7安装mysql
- centos7安装python3.x
- centos7升级gcc、g++
- centos7安装nginx
- centos7部署Nexus
- centos7离线安装python3
- centos7.6编译mariadb10.5.22
- CentOS8
- 银河麒麟V4
- nginx编译
- 银河麒麟V10_x86
- 安装VNC
- 单用户模式
- UOS
- 配置本地apt源
- apt安装vnc-server
- UOS单用户模式
- UOS创建自启动脚本
- 源码编译
- oniguruma编译
- Proxmox VE
- PVE基本使用
- PVE故障
- KVM
- KVM相关命令
- 银河麒麟V10_x86安装kvm
- UOS_arm64安装kvm
- yum、rpm、apt
- dpkg、apt-get、yum和rpm的区别
- rpm打包
- yum相关问题
- 内建银河麒麟的apt源
- 其他软件
- JuiceFS
- nacos
- 常见命令
- 硬盘分区
- Linux常见问题
- 其他
- Cloc代码统计工具
- onlyoffice 在线文档编辑
- onlyoffice添加中文字体
- 遇到的问题
- 网络通信协议
- 部署相关记录
- Vmware workstation虚拟机迁移到PVE指南
- 小操作