javaScript基础

在 HTML 中,JavaScript 代码必须位于 标签之间。

<script>
   document.getElementById("demo").innerHTML = "我的第一段 JavaScript";
</script>

您能够在 HTML 文档中放置任意数量的脚本。

脚本可被放置与 HTML 页面的 或 部分中

也可以放置与外部文件中,文件文件扩展名是**.js**

外部脚本,

在外部文件中放置脚本有如下优势:

  • 分离了 HTML 和 js 代码
  • 使 HTML 和 JavaScript 更易于阅读和维护
  • 已缓存的 JavaScript 文件可加速页面加载

1、基础

1.输出

JavaScript 能够以不同方式“显示”数据:

  • 使用 window.alert() 写入警告框
  • 使用 document.write() 写入 HTML 输出
  • 使用 innerHTML 写入 HTML 元素
  • 使用 console.log() 写入浏览器控制台
<script>
 document.getElementById("demo").innerHTML = 5 + 6;
 document.write(5 + 6);
 window.alert(5 + 6);
 alert(5 + 6);
 console.log(5 + 6);
</script>

2.基础语法

JavaScript 语法是一套规则,它定义了 JavaScript 的语言结构

在编程语言中,变量用于存储数据值

JavaScript 使用 var 关键词来声明变量

= 号用于为变量赋值

var name = "Tina";
var age = 18;

JavaScript 使用**算数运算符(+ - * /)**来计算值:

// 数值计算
var num = 18 + 1
//字符串相加
var str = name + ':' + age

JavaScript 关键词用于标识被执行的动作。

var 关键词告知浏览器创建新的变量:

var x = 7 + 8;
var y = x * 10; 

并非所有 JavaScript 语句都被“执行”。

双斜杠 // 或 /* 与 */ 之间的代码被视为注释

注释会被忽略,不会被执行:

var x = 7;   // 会执行

// var x = 8;   不会执行

3.数据类型

值类型(基本类型)

  • 字符串(String)
  • 数字(Number)
  • 布尔(Boolean)
  • 空(Null)
  • 未定义(Undefined)
  • Symbol

引用数据类型

  • 对象(Object)
  • 数组(Array)
  • 函数(Function)
var length = 7;                             // 数字
var lastName = "Gates";                      // 字符串
var isShow = true;                          // 布尔
var title = null;                          // 空
var title;                               // undefined
var list = ["Ace", "Tina", "Eleven"];         // 数组
var x = {firstName:"Bill", lastName:"Gates"};    // 对象 
var fun = function(){alert('我是一个函数')}    // 对象 

3.1 字符串

字符串(或文本字符串)是一串字符(比如 “Bill Gates”)。

字符串被引号包围。您可使用单引号或双引号:

var name = "Tina";   // 使用双引号
var name = 'Tina';   // 使用单引号
var name = "我的名字叫'Tina'";   // 字符串内包含引号

特殊字符

\ 转义字符

反斜杠转义字符把特殊字符转换为字符串字符:

代码 结果 描述
单引号
" " 双引号
\\ \ 反斜杠
//序列 \" 在字符串中插入双引号:
var x = "中国是瓷器的故乡,因此 china 与\"China(中国)\"同名。"

通常,JavaScript 字符串是原始值,通过字面方式创建:

var firstName = "Bill"

但是字符串也可通过关键词 new 定义为对象:

var firstName = new String("Bill")

当使用 == 相等运算符时,相等字符串是相等的:

var x = "Bill";             
var y = new String("Bill");

// (x == y) 为 true,因为 x 和 y 的值相等

当使用 === 运算符时,相等字符串是不相等的,因为 === 运算符需要类型和值同时相等。

var x = "Bill";             
var y = new String("Bill");

// (x === y) 为 false,因为 x 和 y 的类型不同(字符串与对象)
var x = new String("Bill");             
var y = new String("Bill");

// (x == y) 为 false,因为 x 和 y 是不同的对象
3.1.1字符串长度

内建属性 length 可返回字符串的长度:

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;
3.1.2查找字符串

indexOf() 方法返回字符串中指定文本首次出现的索引(位置)

JavaScript 从零计算位置。

0 是字符串中的第一个位置,1 是第二个,2 是第三个 …

lastIndexOf() 方法返回指定文本在字符串中最后一次出现的索引

如果未找到文本, indexOf() 和 lastIndexOf() 均返回 -1

var str = "这是String字符串的讲解";
var pos = str.indexOf("String");
var pos2 = str.lastIndexOf("String");

两种方法都接受作为检索起始位置的第二个参数。

var str = "这是String字符串的讲解";
var pos = str.indexOf("String",1);
var pos2 = str.lastIndexOf("String",1);
3.1.3 检索字符串

search() 方法搜索特定值的字符串,并返回匹配的位置:

var str = "这是String字符串的讲解";
var pos = str.search("String");

indexOf() 与 search(),是相等的。

这两种方法是不相等的。区别在于:

  • search() 方法无法设置第二个开始位置参数。
  • indexOf() 方法无法设置更强大的搜索值(正则表达式)。
3.1.4提取字符串

有三种提取部分字符串的方法:

  • slice(start, end)

    slice() 提取字符串的某个部分并在新字符串中返回被提取的部分。

    该方法设置两个参数:起始索引(开始位置),终止索引(结束位置)。

    var str = "Apple, Banana, Mango";
    var res = str.slice(7,13);
    //如果某个参数为负,则从字符串的结尾开始计数
    var res2 = str.slice(-13,-7);
    //如果省略第二个参数,则该方法将裁剪字符串的剩余部分
    var res3 = str.slice(7);
    //从结尾计数
    var res = str.slice(-13);
    
  • substring(start, end)

    substring() 类似于 slice()。

    不同之处在于 substring() 无法接受负的索引。

    var str = "Apple, Banana, Mango";
    var res = str.substring(7,13);
    //如果省略第二个参数,则该 substring() 将裁剪字符串的剩余部分。
    var res2 = str.substring(7);
    
  • substr(start, length)

    substr() 类似于 slice()。

    不同之处在于第二个参数规定被提取部分的长度。

    var str = "Apple, Banana, Mango";
    var res = str.substr(7,6);
    //如果省略第二个参数,则该 substr() 将裁剪字符串的剩余部分。
    var res2 = str.substr(7);
    //如果首个参数为负,则从字符串的结尾计算位置
    var res3 = str.substr(-5);
    
3.1.5 替换字符串

replace() 方法用另一个值替换在字符串中指定的值

replace() 方法不会改变调用它的字符串。它返回的是新字符串。

var str = "这是String字符串的讲解";
//默认replace() 只替换首个匹配:
var n = str.replace("String字符串", "前端");
//如需执行大小写不敏感的替换,请使用正则表达式 /i(大小写不敏感):
var n = str.replace(/string字符串/i, "前端");
//如需替换所有匹配,请使用正则表达式的 g 标志(用于全局搜索)
var n = str.replace(/string字符串/g, "前端");
3.1.6 转换为大小写

通过 toUpperCase() 把字符串转换为大写

var text1 = "Hello World!";       // 字符串
var text2 = text1.toUpperCase();  // text2 是被转换为大写的 text1

通过 toLowerCase() 把字符串转换为小写:

var text1 = "Hello World!";       // 字符串
var text2 = text1.toLowerCase();  // text2 是被转换为小写的 text1
3.1.7 concat()

concat() 连接两个或多个字符串:

var text1 = "Hello";
var text2 = "World";
text3 = text1.concat(" ",text2);
3.1.8 String.trim()

trim() 方法删除字符串两端的空白符:

var str = "       Hello World!        ";
alert(str.trim());
3.1.9 charAt()

charAt() 方法返回字符串中指定下标的字符串

var str = "HELLO WORLD";
str.charAt(0);            // 返回 H
3.1.10 字符串转数组

可以通过 split() 将字符串转换为数组:

var txt = "a,b,c,d,e";   // 字符串
txt.split(",");          // 用逗号分隔
txt.split(" ");          // 用空格分隔
txt.split("|");          // 用竖线分隔
txt.split(""); 

3.2 数值

JavaScript 只有一种数值类型。

写数值时用不用小数点均可

var x1 = 34.00;     // 带小数点
var x2 = 34;        // 不带小数点
3.2.1 数字计算

JavaScript 的加法使用 + 运算符。

var x = 10;
var y = 20;
var z = x + y;           

如果对两个字符串相加,结果将是一个字符串的级联:

var x = "10";
var y = "20";
var z = x + y;     

如果您对一个数和一个字符串相加,结果也是字符串级联:

var x = 10;
var y = "20";
var z = x + y;        

JavaScript 从左向右进行编译。

因为 x 和 y 都是数,10 + 20 将被相加。

因为 z 是字符串,30 + “30” 被级联。

在所有数字运算中,JavaScript 会将字符串转换为数字

var x = "100";
var y = "10";
var z = x / y;       // z 将是 10
var z = x * y;       // z 将是 1000
var z = x - y;       // z 将是 90
var z = x + y;       // z 不会是 110(而是 10010)
3.2.2 NaN 非数值

NaN 属于 JavaScript 保留词,指示某个数不是合法数。

尝试用一个非数字字符串进行除法会得到 NaN(Not a Number):

var x = 100 / "Apple";  // x 将是 NaN(Not a Number)
//假如字符串包含数值,则结果将是数:
var x = 100 / "10";     // x 将是 10

可使用全局 JavaScript 函数 isNaN() 来确定某个值是否是数:

var x = 100 / "Apple";
isNaN(x);               // 返回 true,因为 x 不是数

NaN 是数,typeof NaN 返回 number:

typeof NaN;             // 返回 "number"
3.2.3 数值对象

通常 JavaScript 数值是通过字面量创建的原始值:var x = 123

但是也可以通过关键词 new 定义为对象:var y = new Number(123)

var x = 123;
var y = new Number(123);

// typeof x 返回 number
// typeof y 返回 object
3.2.4 toString() 方法

toString() 以字符串返回数值。

所有数字方法可用于任意类型的数字(字面量、变量或表达式)

var x = 123;
x.toString();            // 从变量 x 返回 123
(123).toString();        // 从文本 123 返回 123
(100 + 23).toString();   // 从表达式 100 + 23 返回 123
3.2.5 toFixed() 方法

toFixed() 返回字符串值,它包含了指定位数小数的数字

var x = 9.656;
x.toFixed(0);           // 返回 10
x.toFixed(2);           // 返回 9.66
x.toFixed(4);           // 返回 9.6560
x.toFixed(6);           // 返回 9.656000
3.2.6 toPrecision()

toPrecision() 返回字符串值,它包含了指定长度的数字:

var x = 9.656;
x.toPrecision();        // 返回 9.656
x.toPrecision(2);       // 返回 9.7
x.toPrecision(4);       // 返回 9.656
x.toPrecision(6);       // 返回 9.65600
3.2.7 变量转数值

这三种 JavaScript 方法可用于将变量转换为数字

方法 描述
Number() 返回数字,由其参数转换而来。
parseFloat() 解析其参数并返回浮点数。
  • Number() 方法

    //Number() 可用于把 JavaScript 变量转换为数值
    x = true;
    Number(x);        // 返回 1
    x = false;     
    Number(x);        // 返回 0
    x = new Date();
    Number(x);        // 返回 1404568027739
    x = "10"
    Number(x);        // 返回 10
    x = "10 20"
    Number(x);        // 返回 NaN
    //Number() 还可以把日期转换为数字:
    Number(new Date("2019-04-15"));    // 返回 1506729600000
    
  • parseInt() 方法

    //parseInt() 解析一段字符串并返回数值。允许空格。只返回首个数字
    parseInt("10");         // 返回 10
    parseInt("10.33");      // 返回 10
    parseInt("10 20 30");   // 返回 10
    parseInt("10 years");   // 返回 10
    //如果无法转换为数值,则返回 NaN
    parseInt("years 10");   // 返回 NaN
    

3.3 数组

数组用于在单一变量中存储多个值

3.3.1 申明数组

数组用方括号书写。

数组的项目由逗号分隔

数组索引基于零,这意味着第一个项目是 [0],第二个项目是 [1],以此类推

var list = ["Ace", "Tina", "Eleven"];
var list = new Array("Ace", "Tina", "Eleven");
3.3.2 访问数组

通过引用索引号(下标号)来引用某个数组元素

//获取第一个
var name = list[0];
//获取最后一个
var name = list[-1];
3.3.3 改变元素

修改了 cars 中第一个元素的值:

list[0] = "Tina";
3.3.4 length 属性

length 属性返回数组的长度(数组元素的数目)

var list = ["Ace", "Tina", "Eleven"];
list.length;                       // fruits 的长度是 3
3.3.5 遍历数组
for循环
var list = ["Ace", "Tina", "Eleven"];
for (var i = 0; i < list.length; i++) {
    console.log(list[i])
} 
Array.foreach()

该函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身
var list = ["Ace", "Tina", "Eleven"];
list.forEach(myFunction);

function myFunction(value) {
  console.log(value)
}
Array.map()

map() 方法通过对每个数组元素执行函数来创建新数组。

map() 方法不会对没有值的数组元素执行函数。

map() 方法不会更改原始数组。

函数有 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身
//每个数组值乘以2
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);

function myFunction(value, index, array) {
  return value * 2;
}
Array.filter()

filter() 方法创建一个包含通过测试的数组元素的新数组

函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身
//获取大于 18 的元素
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
Array.reduce()

reduce() 方法在每个数组元素上运行函数,以生成(减少它)单个值。

reduce() 方法不会减少原始数组

函数接受 4 个参数:

  • 初始值/先前返回的值
  • 项目值
  • 项目索引
  • 数组本身
//求和
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction,0);

function myFunction(total, value, index, array) {
  return total + value;
}
Array.reduceRight()

reduceRight() 方法在每个数组元素上运行函数,以生成(减少它)单个值。

reduceRight() 方法在数组中从右到左工作

reduceRight() 方法不会减少原始数组

函数接受 4 个参数:

  • 初始值/先前返回的值

  • 项目值

  • 项目索引

  • 数组本身

    //求和
    var numbers1 = [45, 4, 9, 16, 25];
    var sum = numbers1.reduceRight(myFunction,0);
    
    function myFunction(total, value) {
      return total + value;
    }
    
Array.every()

every() 方法检查所有数组值是否通过测试

函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身
//检查所有数组值是否大于 18
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
Array.some()

some() 方法检查某些数组值是否通过了测试

函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身
//检查数组是否有大于 18的值
var numbers = [45, 4, 9, 16, 25];
var someOver18 = numbers.some(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
Array.indexOf()

indexOf() 方法在数组中搜索元素值并返回其位置

方法可接受 2 个参数:

  • 要检索的项目
  • 从哪里开始搜索
var numbers = [45, 4, 9, 16, 25];
var a = numbers.indexOf(25,1);
Array.lastIndexOf()

从数组结尾开始搜索

方法可接受 2 个参数:

  • 要检索的项目
  • 从哪里开始搜索
var numbers = [45, 4, 9, 16, 25];
var a = numbers.lastIndexOf(25);
Array.find()

find() 方法返回通过测试函数的第一个数组元素的值

函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身
//大于 18 的第一个元素的值
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
Array.findIndex()

findIndex() 方法返回通过测试函数的第一个数组元素的索引

函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身
//查找大于 18 的第一个元素的索引
var numbers = [4, 9, 16, 25, 29];
var first = numbers.findIndex(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
3.3.6 数组转字符串

toString() 把数组转换为数组值(逗号分隔)的字符串

var list = ["Ace", "Tina", "Eleven"];
vat str = list.toString(); //Ace,Tina,Eleven

join() 方法也可将所有数组元素结合为一个字符串。

它的行为类似 toString(),但是您还可以规定分隔符

var list = ["Ace", "Tina", "Eleven"];
vat str = list.join("-")//Ace-Tina-Eleven
3.3.7 pop()

pop() 方法从数组中删除最后一个元素

pop() 方法返回被删除的值

var list = ["Ace", "Tina", "Eleven"];
var str = list.pop();  // 从 list 删除最后一个元素("Eleven")
3.3.8 push()

**push()**向数组添加新元素

push() 方法返回新数组的长度

var lengthNUm = list.push('张三')
//也可以使用 length 属性向数组添加新元素:
list[list.length] = '张三'
3.3.9 shift()

shift() 方法会删除首个数组元素

shift() 方法返回被删除的字符串

var list = ["Ace", "Tina", "Eleven"];
list.shift(); // 从 list 删除第一个元素 "Ace"
3.3.10 unshift()

unshift() 方法(在开头)向数组添加新元素

unshift() 方法返回新数组的长度。

var list = ["Ace", "Tina", "Eleven"];
list.unshift("张三"); 
3.3.11 delete

元素可以使用 delete 运算符来删除

var list = ["Ace", "Tina", "Eleven"];
delete list[0];   // 把 list 中的首个元素改为 undefined
3.3.12 splice()

splice() 方法可用于向数组添加新项

第一个参数(2)定义了应添加新元素的位置(拼接)。

第二个参数(0)定义应删除多少元素。

其余参数(“Lemon”,“Kiwi”)定义要添加的新元素。

splice() 方法返回一个包含已删除项的数组:

var list = ["Ace", "Tina", "Eleven"];
list.splice(1, 1, "张三");  //['Tina']

 //删除 fruits 中的第一个元素
list.splice(0, 1);      
3.3.13 合并数组

concat() 方法通过合并(连接)现有数组来创建一个新数组

concat() 方法不会更改现有数组。它总是返回一个新数组。

concat() 方法可以使用任意数量的数组参数

var list = ["Ace", "Tina", "Eleven"];
var myGirls = ["张三", "二狗"];
var newList = myGirls.concat(list);   
3.3.14 slice()

slice() 方法用数组的某个片段切出新数组

slice() 方法创建新数组。它不会从源数组中删除任何元素

slice() 可接受两个参数

var list = ["Ace", "Tina", "Eleven"];
//如果结束参数被省略,则 slice() 会切出数组的剩余部分
var newList = list.slice(2);  // ['Eleven']  ["Eleven"]
//从开始参数选取元素,直到结束参数位置(不包括)为止
var newList = list.slice(1,2);  //['Tina']
3.3.15 toString()

把数组转换为字符串,toString() 方法以逗号分隔的字符串返回数组

var list = ["Ace", "Tina", "Eleven"];
var str = list.toString()
3.3.16 sort() 排序

sort() 方法以字母顺序对数组进行排序

var list = ["Ace", "Tina", "Eleven"];
list.sort();     

**sort()**还接受一个函数作为参数,根据函数内容决定数字排序

该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

  • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  • 若 a 等于 b,则返回 0。
  • 若 a 大于 b,则返回一个大于 0 的值。
var list = [100, 55, 53, 105];
list.sort(function(a, b){return a - b});  //正序 [53, 55, 100, 105]
list.sort(function(a, b){return b - a});  //倒序 [105, 100, 55, 53]
3.3.17 reverse() 反转数组

reverse() 方法反转数组中的元素

var list = [100, 55, 53, 105];
list.reverse()
3.3.7 识别数组
  • Array.isArray()

    Array.isArray(list);    
    
  • list instanceof Array

    list instanceof Array 
    

3.4 对象

3.4.1 对象定义

JavaScript 对象用花括号来书写。

对象也是一个变量,但对象可以包含多个值(多个变量),每个值以 name:value 对呈现

var obj = {
	type: 1,
    name: 'Tina',
    age: 18,
    sayHi:function(){
        console.log('hi~~')
    }
}

var obj = new Object();//{}
	obj.name = 'Tina'

3.4.2 对象属性

键值对在 JavaScript 对象通常称为 对象属性

可以通过两种方式访问对象属性

var obj = {
	type: 1,
    name: 'Tina',
    age: 18,
    sayHi:function(){
        console.log('hi~~')
    },
}
var type = obj.type
var name = obj.name
obj.sayHi()
3.4.3 对象遍历

for/in - 遍历对象属性

var obj = {
	type: 1,
    name: 'Tina',
    age: 18,
    sayHi:function(){
        console.log('hi~~')
    }
}
var x;
for (x in obj) {
    //X=='type'  obj[x] ==obj.type == 1
    console.log(x + ' : ' + obj[x])
}

3.5 函数

3.5.1函数定义

函数就是包裹在花括号中的代码块,前面使用了关键词

function fun(){
 console.log('我是一个函数')
}

fun()

当调用该函数时,会执行函数内的代码。

可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用

3.5.2 带参数函数

在调用函数时,可以向其传递值,这些值被称为参数。

这些参数可以在函数中使用。多个参数,由逗号 , 分隔

function fun(str,str3,str2){
    //var str = 'Tina';
   console.log(str)
}
fun('Tina','Ace','Eleven')

变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推

function fun(name,str){
 console.log(name + '说了一句:' + str)
}
3.5.3 带返回值的函数

使用 return 语句就可以实现,函数停止执行,并返回指定的值

function fun(name,str){
    console.log(name + '说了一句:' + str)
    return name + '说了一句:' + str
}
3.5.4 函数作用域

函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它

var name = 'Tina'
function fun(){
    console.log(name) // Tina
}

function fun(){
   var name = 'Tina'
   console.log(name )
}
fun()
console.log(name)  //undefined

变量的生命期从它们被声明的时间开始

局部变量会在函数运行以后被删除

全局变量会在页面关闭后被删除

3.6 Date

3.6.1 创建 Date 对象
  • new Date()
  • new Date(year, month, day, hours, minutes, seconds, milliseconds)
  • new Date(milliseconds)
  • new Date(date string)
//用当前日期和时间创建新的日期对象
var d = new Date();
//用指定日期和时间创建新的日期对象
//7个数字分别指定年、月、日、小时、分钟、秒和毫秒(按此顺序)
var d = new Date(2018, 11, 24, 10, 33, 30, 0);
//根据日期字符串创建一个新的日期对象
var d = new Date("October 13, 2014 11:13:00");
//根据毫秒创建日期
var d = new Date(86400000);
//根据时间字符串创建日期对象
var d = new Date('2021-11-20');
Date 对象方法
方法 描述
Date() 返回当日的日期和时间。
getDate() 返回Date对象里的日期(日)
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
toSource() 返回该对象的源代码。
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 请使用 toUTCString() 方法代替。
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 Date 对象的原始值。

2.逻辑

1.运算符

算术运算符

运算符 描述 例子 x 运算结果 y 运算结果
+ 加法 x=y+2 7 5
- 减法 x=y-2 3 5
* 乘法 x=y*2 10 5
/ 除法 x=y/2 2.5 5
% 取模(余数) x=y%2 1 5
++ 自增 x=++y 7 6
自减 x=–y 4 5

赋值运算符

赋值运算符用于给 JavaScript 变量赋值。

运算符 例子 等同于
= x=y
+= x+=y x=x+y
-= x-=y x=x-y
*= x*=y x=x*y
/= x/=y x=x/y
%= x%=y x=x%y

2.比较

比较运算符

比较运算符在逻辑语句中使用,以测定变量或值是否相等。

运算符 描述
== 等于(值相等)
x==5 true
=== 绝对等于(值和类型均相等)
x===5 true
!= 不等于值不相等)
!== 不绝对等于(值和类型有一个不相等,或两个都不相等)
x!==5 false
> 大于
< 小于
>= 大于或等于
<= 小于或等于

使用

可以在条件语句中使用比较运算符对值进行比较

if (age < 18){
	console.log("年轻人")
}

逻辑运算符

逻辑运算符用于判定变量或值之间的逻辑

运算符 描述
&& 与 且
||
!

三元运算符

条件 ? 成立执行 : 不成立执行

age<18 && name==='Tina' ? '小姐姐' : '老师'

3.条件判断

条件语句用于基于不同的条件来执行不同的动作

  • if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
  • if…else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
  • if…else if…else 语句- 使用该语句来选择多个代码块之一来执行
if(name === 'Tina'){
	console.log('Tina开始叨叨了')
}else{
	console.log('不是Tina在叨叨')
}
if(name === 'Tina'){
	console.log('Tina开始叨叨了')
}else if(name === 'Ace'){
    console.log('Ace开始叨叨了')
}else if(name === 'Eleven'){
    console.log('Eleven开始叨叨了')
}else{
	console.log('有人在叨叨,但是我不知道是谁')
}

4.switch语句

switch 语句根据条件选择多个需被执行的代码块之一

  • 计算一次 switch 表达式
  • 把表达式的值与每个 case 的值进行对比
  • 如果存在匹配,则执行关联代码
switch(表达式) {
     case n:
        代码块
        break;
     case n:
        代码块
        break;
     default:
        默认代码块
} 
switch(name) {
     case 'Tina':
        console.log('Tina开始叨叨了')
        break;
     case 'Ace':
        console.log('Ace开始叨叨了')
        break;
     default:
        console.log('有人在叨叨,但是我不知道是谁')
}

break 关键词

遇到 break 关键词,会跳出 switch 代码块,停止后续的代码执行

break 能够节省大量执行时间,因为它会“忽略” switch 代码块中的其他代码的执行

default 关键词

default 关键词规定不存在 case 匹配时所运行的代码

case 条件

case 表示当前对比对象的值,不同的 case 可以使用相同的代码

switch(name) {
     case 'Tina':
     case 'Ace':
        console.log('前端老师开始叨叨了')
        break;
     default:
        console.log('有人在叨叨,但是我不知道是谁')
}

Switch case 使用严格比较(===)。

值必须与要匹配的类型相同。

只有操作数属于同一类型时,严格比较才能为 true

5.While 循环

While 循环

只要条件为 true,循环能够一直执行代码块

while (i < 10) {
    console.log(i)
    i++;
}

Do/While 循环

do/while 循环是 while 循环的变体。在检查条件是否为真之前,这种循环会执行一次代码块,然后只要条件为真就会重复循环。

do{
   	console.log(i)
    i++;
}while (i<5);

3.Math 对象

​ Math 对象方法

方法 描述
abs(x) 返回数的绝对值。
acos(x) 返回数的反余弦值。
asin(x) 返回数的反正弦值。
atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。
atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。
ceil(x) 对数进行上舍入。
cos(x) 返回数的余弦。
exp(x) 返回 e 的指数。
floor(x) 对数进行下舍入。
log(x) 返回数的自然对数(底为e)。
max(x,y) 返回 x 和 y 中的最高值。
min(x,y) 返回 x 和 y 中的最低值。
pow(x,y) 返回 x 的 y 次幂。
random() 返回 0 ~ 1 之间的随机数。
round(x) 把数四舍五入为最接近的整数。
sin(x) 返回数的正弦。
sqrt(x) 返回数的平方根。
tan(x) 返回角的正切。
toSource() 返回该对象的源代码。
valueOf() 返回 Math 对象的原始值。