文章目录
- 数据类型
- 变量赋值
- 数字递增+=、递减-=、乘*=、除/=
- 余数运算符
- 转义字符
- 单引号双引号
- 查找字符串的长度
- index(索引)
- 修改数组中的数据
- push() 添加元素到数组末尾
- .unshift() 添加元素到数组头部
- .pop() 移除数组最后一个元素
- .shift() 移除数组第一个元素
- .用函数编写可重用代码
- .全局作用域和函数
- 局部作用域和函数
- 函数中的全局作用域和局部作用域
- if 语句
- 严格相等运算符===
- 严格不等运算符!==
- 查看数据类型 typeof
- 且或非
- Switch 语句
- 对象(object)(字典)
- for循环
- do...while 循环
- 递归
- floor向下取整
- parseInt字符串转换成整数
- parseInt 函数进制
- 条件运算符(三元运算符)
- 多层三元运算
数据类型
undefined(未定义)、null(空)、boolean(布尔型)、string(字符串)、symbol、number(数字)、bigint(可以表示任意大的整数)和 object(对象)
变量赋值
var ourName = 0;
通常在声明变量的时候会给变量初始化一个初始值
ourName= 5;
一个变量的值赋给另一个
var myNum;
myNum = ourName;
变量被声明的时候,程序内部会给它一个初始值 undefined
当对一个值为 undefined 的变量进行运算操作的时候,算出来的结果将会是 NaN,它的意思是 “Not a Number”。
当用一个值是 undefined 的变量来做字符串拼接操作的时候,它会转换成字符串(string)undefined。
数字递增+=、递减-=、乘*=、除/=
增
i++;
i+=1;
i=i+1;
减
i--;
i-=1;
乘
myVar *= 5;
除
myVar /= 5;
余数运算符
5 % 2 = 1 因为
Math.floor(5 / 2) = 2 (商)
2 * 2 = 4
5 - 4 = 1 (余数)
转义字符
在被转义的字符前面使用反斜杠(\)
var sampleStr = "Alan said, \"Peter is learning JavaScript\".";
\' 单引号
\" 双引号
\\ 反斜杠
\n 换行符
\r 回车符
\t 制表符
\b 退格
\f 换页符
单引号双引号
在一个字符串中使用多个引号的时候,可以使用单引号包裹双引号或者相反。此时不必使用转义字符
查找字符串的长度
"Alan Peter".length
index(索引)
var firstName = "Charles";
var firstLetter = firstName[0];
获取最后一个值
var lastLetter = firstName[firstName.length - 1];
修改数组中的数据
var ourArray = [50,40,30];
ourArray[0] = 15;
push() 添加元素到数组末尾
将数据添加到数组末尾
var arr1 = [1,2,3];
arr1.push(4);
.unshift() 添加元素到数组头部
用法与push相同
var ourArray = ["Stimpson", "J", "cat"];
ourArray.unshift("Happy");
.pop() 移除数组最后一个元素
移除数组末尾的元素并返回这个元素
var threeArr = [1, 4, 6];
var oneDown = threeArr.pop();
.shift() 移除数组第一个元素
移除数组第一个元素并返回这个元素
var ourArray = ["Stimpson", "J", ["cat"]];
var removedFromOurArray = ourArray.shift();
.用函数编写可重用代码
function testFun(param1, param2) {
console.log(param1, param2);
}
testFun()
.全局作用域和函数
具有全局作用域的变量可以在代码的任何地方被调用
没有使用 var 关键字定义的变量,会被自动创建在 global 作用域中,形成全局变量。
局部作用域和函数
function myTest() {
var loc = "foo"; 只在该函数内可见
console.log(loc);
}
函数中的全局作用域和局部作用域
var someVar = "Hat";
function myFun() {
var someVar = "Head";
return someVar;
}
函数 myFun 将会返回字符串 Head,因为局部变量的优先级更高
if 语句
function test (myCondition) {
if (myCondition) {
return "It was true";
}
return "It was false";
}
test(true);
test(false);
严格相等运算符===
与相对相等操作符(==)不同,严格相等运算符不会做类型转换。
3 === 3 true
3 === '3' false
严格不等运算符!==
不会转换值的数据类型
3 !== 3 false
3 !== '3' true
4 !== 3 true
查看数据类型 typeof
typeof '3'
且或非
&& 且
|| 或
Switch 语句
Switch 将表达式的值与 case 子句匹配
测试 case 值使用严格相等(===)运算符进行比较。
break 告诉 JavaScript 停止执行 switch 语句。 如果遗漏了 break ,下一个语句将会被执行。
switch(lowercaseLetter) {
case "a":
console.log("A");
break;
case "b":
console.log("B");
break;
default:
defaultStatement;
break;
}
添加 default 语句,它会在找不到相匹配的 case 语句之后执行。
可以把它看作是 if/else 链中最后的那个 else 语句
多个判断设置相同结果
var result = "";
switch(val) {
case 1:
case 2:
case 3:
result = "1, 2, or 3";
break;
case 4:
result = "4 alone";
}
对象(object)(字典)
访问对象属性(字典)
访问对象属性有两种方式:点号表示法(.)和方括号表示法([])
var myObj = {
prop1: "val1",
prop2: "val2"
};
var prop1val = myObj.prop1;
var prop2val = myObj[prop2];
更新(添加)对象属性(字典)
更新也有两种方式:点号(.)和方括号([])
删除对象属性(字典)
delete ourDog.bark;
检查对象属性是否存在
var myObj = {
top: "hat",
bottom: "pants"
};
myObj.hasOwnProperty("top"); true
myObj.hasOwnProperty("middle"); false
访问嵌套对象
var ourStorage = {
"desk": {
"drawer": "stapler"
},
"cabinet": {
"top drawer": {
"folder1": "a file",
"folder2": "secrets"
},
"bottom drawer": "soda"
}
};
ourStorage.cabinet["top drawer"].folder2;
ourStorage.desk.drawer;
for循环
var ourArray = [];
for (var i = 0; i < 5; i++) {
ourArray.push(i);
}
do…while 循环
不论什么情况,它都会首先 do(运行)循环里的第一部分代码,然后 while(当)规定的条件被评估为 true(真)的时候,它会继续运行循环
递归
function multiply(arr, n) {
if (n <= 0) {
return 1;
} else {
return multiply(arr, n - 1) * arr[n - 1];
}
}
等同于:
function multiply(arr, n) {
var product = 1;
for (var i = 0; i < n; i++) {
product *= arr[i];
}
return product;
}
floor向下取整
Math.floor(Math.random() * 20);
向下取整获得最近的整数
parseInt字符串转换成整数
var a = parseInt("007");
parseInt 函数进制
parseInt(string, radix);
var a = parseInt("11", 2);
变量 radix 表示 11 是在二进制系统中。 这个示例将字符串 11 转换为整数 3
条件运算符(三元运算符)
a ? b : c, where a 是条件,当条件返回 true 的时候运行代码 b,当条件返回 false 的时候运行代码 c
return a > b ? "a is greater" : "b is greater or equal";
多层三元运算
return (a === b) ? "a and b are equal"
: (a > b) ? "a is greater"
: "b is greater";