1.JavaScript 函数会在某代码调用它时被执行。
function myFunction(p1, p2) {
return p1 * p2; // 该函数返回 p1 和 p2 的乘积
}
2.JavaScript 函数语法
JavaScript 函数通过 function 关键词进行定义,其后是函数名和括号 ()。
函数名可包含字母、数字、下划线和美元符号(规则与变量名相同)。
圆括号可包括由逗号分隔的参数:
由函数执行的代码被放置在花括号中:{}
function name(参数 1, 参数 2, 参数 3) {
要执行的代码
}
3.函数返回
当 JavaScript 到达 return 语句,函数将停止执行。
如果函数被某条语句调用,JavaScript 将在调用语句之后“返回”执行代码。
函数通常会计算出返回值。这个返回值会返回给调用者:
var x = myFunction(4, 3); // 调用函数,返回值被赋值给 x
function myFunction(a, b) {
return a * b; // 函数返回 a 和 b 的乘积
}
4.JavaScript 对象
(JavaScript 对象中的)名称:值对被称为属性。
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
4.1对象方法:
对象也可以有方法。
方法是在对象上执行的动作。
方法以函数定义被存储在属性中。
栗子
var person = {
firstName: "Bill",
lastName : "Gates",
id : 678,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
4.2访问对象属性
第一种
objectName.propertyName
第二种
objectName["propertyName"]
5.JavaScript 字符串
JavaScript 字符串用于存储和操作文本。
5.1JavaScript 字符串是引号中的零个或多个字符。
var x = "Bill Gates"
5.2字符串长度
内建属性 length 可返回字符串的长度:
var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;
5.3查找字符串中的字符串
indexOf() 方法返回字符串中指定文本首次出现的索引(位置):
var str = "The full name of China is the People's Republic of China.";
var pos = str.indexOf("China");
pos = 17
如果未找到文本, indexOf() 和 lastIndexOf() 均返回 -1。
lastIndexOf() 方法返回指定文本在字符串中最后一次出现的索引:
var str = "The full name of China is the People's Republic of China.";
var pos = str.lastIndexOf("China");
pos = 51
如果未找到文本, indexOf() 和 lastIndexOf() 均返回 -1。
5.4提取部分字符串
有三种提取部分字符串的方法:
slice(start, end)
substring(start, end)
substr(start, length)
slice() 方法
slice() 提取字符串的某个部分并在新字符串中返回被提取的部分。
该方法设置两个参数:起始索引(开始位置),终止索引(结束位置)。
这个例子裁剪字符串中位置 7 到位置 13 的片段:
var str = "Apple, Banana, Mango";
var res = str.slice(7,13);
res = Banana
substring() 方法
var str = "Apple, Banana, Mango";
var res = str.substring(7,13);
res = Banana
substr() 方法
substr() 类似于 slice()。
不同之处在于第二个参数规定被提取部分的长度。
var str = "Apple, Banana, Mango";
var res = str.substr(7,6);
res = Banana
替换字符串内容
replace() 方法用另一个值替换在字符串中指定的值:
str = "Please visit Microsoft!";
var n = str.replace("Microsoft", "W3School");
replace() 方法不会改变调用它的字符串。它返回的是新字符串。
默认地,replace() 只替换首个匹配:
转换为大写和小写
通过 toUpperCase() 把字符串转换为大写:
var text1 = "Hello World!"; // 字符串
var text2 = text1.toUpperCase(); // text2 是被转换为大写的 text1
text2 = HELLO WORLD!
同理通过 toLowerCase() 把字符串转换为小写:
concat() 方法
concat() 连接两个或多个字符串:
把字符串转换为数组
可以通过 split() 将字符串转换为数组:
var txt = "a,b,c,d,e"; // 字符串
txt.split(","); // 用逗号分隔
txt.split(" "); // 用空格分隔
txt.split("|"); // 用竖线分隔
7.数组属性和方法
var x = cars.length; // length 属性返回元素的数量
var y = cars.sort(); // sort() 方法对数组进行排序
7.1遍历数组元素
遍历数组的最安全方法是使用 "for" 循环:
var fruits, text, fLen, i;
fruits = ["Banana", "Orange", "Apple", "Mango"];
fLen = fruits.length;
text = "";
for (i = 0; i < fLen; i++) {
text += "- " + fruits[i] + "
";
}
7.2添加数组元素
向数组添加新元素的最佳方法是使用 push() 方法:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Lemon");
也可以使用 length 属性向数组添加新元素:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[fruits.length] = "Lemon"; // 向 fruits 添加一个新元素 (Lemon)
7.3删除元素
shift() 方法会删除首个数组元素,并把所有其他元素“位移”到更低的索引。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift(); // 从 fruits 删除第一个元素 "Banana"
使用 splice() 来删除元素
通过聪明的参数设定,您能够使用 splice() 在数组中不留“空洞”的情况下移除元素:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(0, 1); // 删除 fruits 中的第一个元素
7.4合并(连接)数组
concat() 方法通过合并(连接)现有数组来创建一个新数组:
实例(合并两个数组)
concat() 方法不会更改现有数组。它总是返回一个新数组。
var myGirls = ["Cecilie", "Lone"];
var myBoys = ["Emil", "Tobias", "Linus"];
var myChildren = myGirls.concat(myBoys); // 连接 myGirls 和 myBoys
myChildren =Emma,Isabella,Jacob,Michael,Ethan
所有 JavaScript 对象都拥有 toString() 方法。
数组转字符串
自动 toString()
如果需要原始值,则 JavaScript 会自动把数组转换为字符串。下面两个例子将产生相同的结果:
7.5JavaScript 数组排序
sort() 方法是最强大的数组方法之一。
sort() 方法以字母顺序对数组进行排序:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); // 对 fruits 中的元素进行排序
fruits =[ Apple,Banana,Mango,Orange]
反转数组
reverse() 方法反转数组中的元素。
您可以使用它以降序对数组进行排序:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse(); // 反转元素顺序
fruits = Apple,Banana,Mango,Orange
数组排序
默认地,sort() 函数按照字符串顺序对值进行排序。
该函数很适合字符串("Apple" 会排在 "Banana" 之前)。
不过,如果数字按照字符串来排序,则 "25" 大于 "100",因为 "2" 大于 "1"。
正因如此,sort() 方法在对数值排序时会产生不正确的结果。
我们通过一个比值函数来修正此问题:
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
使用相同的技巧对数组进行降序排序:
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
查找集合中的最大值
对数组使用 Math.max()
您可以使用 Math.max.apply 来查找数组中的最高值:
实例
function myArrayMax(arr) {
return Math.max.apply(null, arr);
}
查找数组中的最小值
对数组使用 Math.min()
您可以使用 Math.min.apply 来查找数组中的最低值:
function myArrayMin(arr) {
return Math.min.apply(null, arr);
}
排序对象数组
JavaScript 数组经常会包含对象:
var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}];
cars.sort(function(a, b){return a.year - b.year});
比较字符串属性会稍复杂:
cars.sort(function(a, b){
var x = a.type.toLowerCase();
var y = b.type.toLowerCase();
if (x < y) {return -1;}
if (x > y) {return 1;}
return 0;
});