做整理是为了知识更加系统一些,遂记录
参考资料
js基础算法
JavaScript 字符串
可以用单引号或双引号
查找字符串长度
.length
空格符也会计算在内
使用方括号查找字符串中的第一个字符
方括号表示法(Bracket notation)是一种在字符串中的特定 index(索引)处获取字符的方法
xxx[0]
获取字符串第一个字符
字符串的不变性
字符串要变整个改掉,不能用xxx[0]
这样改
方括号查找字符串中的第 N 个字符
xxx[N-1]
即可
方括号查找字符串中的最后一个字符
xxx[xxx.length-1]
方括号查找字符串中的倒数第 N 个字符
xxx[xxx.length-N]
填词
字符串变量:myNoun
、myAdjective
、myVerb
和 myAdverb
字符串 const wordBlanks = "The"+" "+myAdjective+" "+myNoun+" "+myVerb+" "+myAdverb;
数组
js数组将多个值存储在一个变量中
const myArray = ["hi",3];
将一个数组嵌套在另一个数组中
const teams = [["Bulls", 23], ["White Sox", 45]];
也叫做多维数组(multi-dimensional array)
通过索引访问数组中的数据
和字符串时一样
通过索引修改数组中的数据
const myArray = [18, 64, 99];
myArray[0] = 45;
修改索引0的值
使用索引访问多维数组
可以把多维数组看作成是数组中的数组。
使用括号访问数组时,第一组括号指的是最外层(第一层)数组中的条目
通过每一对额外的括号指向里面下一层的条目
const arr = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[[10, 11, 12], 13, 14]
];
const subarray = arr[3];
const nestedSubarray = arr[3][0];
const element = arr[3][0][1];
注意:数组和方括号之间不允许加空格
使用 push 方法操作数组---数据添加到数组末尾
一个将数据添加到数组末尾的简单方法是 push()
函数
.push()
接受一个或多个参数(parameters),并把它压入到数组的末尾
const arr1 = [1, 2, 3];
arr1.push(4);
const arr2 = ["Stimpson", "J", "cat"];
arr2.push(["happy", "joy"]);
运行后arr1
值为 [1, 2, 3, 4]
,arr2
值为 ["Stimpson", "J", "cat", ["happy", "joy"]]
。
使用 pop 方法操作数组---弹出数组末尾的值并返回这个元素
.pop()
函数用来弹出一个数组末尾的值
可以把这个弹出的值赋给一个变量存储起来
换句话说就是 .pop()
函数移除数组末尾的元素并返回这个元素
数组中任何类型的元素(数值,字符串,甚至是数组)都可以被弹出来
使用 shift 方法操作数组---移除数组首项的值并返回这个元素
.shift()
,它的工作原理就像 .pop()
,但它移除的是第一个元素
const ourArray = ["Stimpson", "J", ["cat"]];
const removedFromOurArray = ourArray.shift();//注意需要定义变量
removedFromOurArray
值为 Stimpson
,ourArray
值为 ["J", ["cat"]]
使用 unshift 方法操作数组---在数组的头部添加元素
不仅可以移出,也可以 unshift
(移入)一个元素到数组的头部
const ourArray = ["Stimpson", "J", "cat"];
ourArray.shift();
ourArray.unshift("Happy");
在 shift
后ourArray
值为 ["J", "cat"]
。 在 unshift
后ourArray
值为 ["Happy", "J", "cat"]
。
购物清单---创建多位数组
创建多维数组,方法很多:
const myList = [["Chocolate Bar",15],["qingcai",3],["caihua",4],["guobaorou",10],["zhajitui",5]];
const myList = [];
myList.push(["Chocolate Bar",15]);
myList.push(["qingcai",3]);
myList.push(["caihua",4]);
myList.push(["guobaorou",10]);
myList.push(["zhajitui",5]);
函数
用函数编写可复用代码
可以把代码的重复部分抽取出来,放到一个函数 (functions)中
function functionName() {
console.log("Hello World");
}
每次调用functionName
时,都会运行大括号内的内容
将值传递给带有参数的函数
函数的参数 (parameters)在函数调用中充当传入函数的输入占位符(也叫形参)
function testFun(param1, param2) {
console.log(param1, param2);
}
调用函数的时候如果没有输入两个参数则会输出NaN
使用 return 给函数返回值
我们可以通过函数的参数(arguments)把值传入函数, 也可以使用 return
语句把数据从一个函数中传出来
function plusThree(num) {
return num + 3;
}
const answer = plusThree(5);
全局作用域和函数
作用域涉及到变量的作用范围
在函数外定义的变量具有 全局 作用域
也就是具有全局作用域的变量可以在代码的任何地方被调用
未使用 let
或 const
关键字声明的变量会在 global
范围内自动创建
当在代码其他地方无意间定义了一个变量,刚好变量名与全局变量相同,这时会产生意想不到的后果
你应该总是用 let
或 const
声明你的变量
const myGlobal=10;
function fun1() {
oopsGlobal=5;
}
fun1();
function fun2() {
let output = "";
if (typeof myGlobal != "undefined") {
output += "myGlobal: " + myGlobal;
}
if (typeof oopsGlobal != "undefined") {
output += " oopsGlobal: " + oopsGlobal;
}
console.log(output);
};
fun2()
输出myGlobal: 10 oopsGlobal: 5
局部作用域和函数
在一个函数内声明的变量,以及该函数的参数都具有局部(local)作用域
也就是它们只在该函数内可见
function myTest() {
const loc = "foo";
console.log(loc);
}
myTest();
console.log(loc);
外面的console.log
就会抛出错误
函数中的全局作用域和局部作用域---局部变量优先级更高
一个程序中有可能具有相同名称的局部变量 和全局变量
在这种情况下,局部变量将会优先于全局变量
const someVar = "Hat";
function myFun() {
const someVar = "Head";
return someVar;
}
函数 myFun
将会返回字符串 Head
函数也可以返回 undefined---没有return时
函数一般用 return
语句来返回值,但这不是必须的
在函数没有 return
语句的情况下,当你调用它时,该函数会执行内部代码,返回的值是 undefined
。
let sum = 0;
function addSum(num) {
sum = sum + num;
}
addSum(3);
返回值为undefined
使用返回值赋值---在return时计算
可以获取函数的返回值,并将其赋值给一个变量
let processed = 0;
function processArg(num) {
return (num + 3) / 5;
}
processed=processArg(7)
队列---新条目进旧条目出
把数字添加到数组的结尾,然后移出数组的第一个元素
function nextInLine(arr, item) {
arr.push(item);
return item=arr.shift();
}
// 设置
let testArr = [1, 2, 3, 4, 5];
// 显示代码
console.log("Before: " + JSON.stringify(testArr));
console.log(nextInLine(testArr, 6));
console.log("After: " + JSON.stringify(testArr));
理解布尔值
数据类型布尔(Boolean)
布尔值只能是两个值中的一个:true
或者 false
注意: 布尔值是不带引号的。 字符串 "true"
和 "false"
不是布尔值,在 JavaScript 中也没有特殊含义。
用 if 语句来表达条件逻辑
关键字 if
告诉 JavaScript 在小括号中的条件为真的情况下去执行定义在大括号里面的代码
这种条件被称为 Boolean
条件,因为他们只可能是 true
(真)或 false
(假)
//伪代码
if(条件为真){
语句被执行
}
function trueOrFalse(wasThatTrue) {
if(wasThatTrue){
return "Yes, that was true"
}
return "No, that was false"
}
如果参数 wasThatTrue
值为 true
,返回 Yes, that was true
,否则,返回No, that was false