✊不积跬步,无以至千里;不积小流,无以成江海。
运算符的结合性与优先级
结合性定义了当多个相同优先级的运算符出现时,它们是从左往右结合还是从右往左结合。优先级定义了运算符的执行顺序,具有高优先级的运算符会在低优先级的运算符之前执行。
以下是一些常见的JavaScript运算符的结合性和优先级:
-
结合性为从左往右的运算符:
- 赋值运算符(=、+=、-=等)
- 逻辑运算符(&&、||)
- 算术运算符(+、-、*、/等)
- 比较运算符(==、!=、<、>等)
-
结合性为从右往左的运算符:
- 三元条件运算符(?:)
-
结合性既可以从左往右也可以从右往左的运算符:
- 指数运算符(**)
具有高优先级的运算符会在低优先级的运算符之前执行。以下是一些常见运算符的优先级(从高到低):
- 指数运算符(**)
- 一元运算符(++、--、+、-、!等)
- 乘法运算符(*、/、%)
- 加法运算符(+、-)
- 关系运算符(<、<=、>、>=)
- 相等性运算符(==、!=、===、!==)
- 逻辑与运算符(&&)
- 逻辑或运算符(||)
- 条件运算符(?:)
- 赋值运算符(=、+=、-=等)
数字的日常用法
常见的JavaScript数字的日常用法:
- 基本数学运算:JavaScript中的数字可以用于执行基本的数学运算,如加法、减法、乘法和除法。例如:
var a = 5;
var b = 3;
var sum = a + b; // 加法
var difference = a - b; // 减法
var product = a * b; // 乘法
var quotient = a / b; // 除法
- 比较和逻辑运算:数字可以与其他数字进行比较,并使用比较运算符(如大于、小于、等于等)进行逻辑运算。例如:
var a = 5;
var b = 3;
var greaterThan = a > b; // 大于
var lessThan = a < b; // 小于
var equalTo = a === b; // 等于
var logicalAnd = (a > 0) && (b > 0); // 逻辑与
var logicalOr = (a > 0) || (b > 0); // 逻辑或
- 数字格式化:通过使用内置的方法和函数,可以对数字进行格式化,如保留小数位数、转换为字符串等。例如
var num = 3.14159;
var rounded = num.toFixed(2); // 保留两位小数
var convertedToString = num.toString(); // 转换为字符串
- 随机数生成:使用内置的
Math对象,可以生成随机数。例如:
var randomNumber = Math.random(); // 生成0到1之间的随机数
var randomInteger = Math.floor(Math.random() * 10); // 生成0到9之间的随机整数
- 数字处理和计算:JavaScript提供了许多内置的数学函数和方法,用于处理和计算数字。例如:
var absoluteValue = Math.abs(-5); // 绝对值
var squareRoot = Math.sqrt(25); // 平方根
var power = Math.pow(2, 3); // 幂运算
字符串声明方式
在JavaScript中,可以使用单引号(')或双引号(")来声明字符串。
- 使用单引号声明字符串:
var str1 = 'Hello, World!';
- 使用双引号声明字符串:
var str2 = "Hello, World!";
这两种方式在声明字符串时是等效的。
除了上述方式外,JavaScript还提供了使用反引号(`)声明模板字符串的功能。模板字符串提供了更灵活的字符串操作,可以包含变量和表达式。以下是使用反引号声明模板字符串的示例:
var name = 'John';
var age = 30;
var str3 = `My name is ${name} and I'm ${age} years old.`;
${name}和${age}是使用${}语法嵌入在模板字符串中的变量和表达式。这样可以方便地在字符串中插入动态内容。
字符串的访问和拼接
在JavaScript中,可以使用索引和拼接操作来访问和拼接字符串。
- 字符串访问(索引):
字符串中的每个字符都有一个索引,从0开始递增。可以使用方括号([])加索引的方式访问字符串中的特定字符。例如:
var str = "Hello, World!";
var firstCharacter = str[0]; // 访问第一个字符,结果为 "H"
var sixthCharacter = str[6]; // 访问第七个字符,结果为 ","
- 字符串拼接:
字符串拼接是将多个字符串连接在一起形成一个新的字符串。在JavaScript中,可以使用加号(+)运算符或模板字符串来进行字符串拼接。例如:
var str1 = "Hello";
var str2 = "World";
var result1 = str1 + ", " + str2; // 使用加号进行字符串拼接,结果为 "Hello, World"
var name = "John";
var age = 30;
var result2 = `My name is ${name} and I'm ${age} years old.`; // 使用模板字符串进行字符串拼接,结果为 "My name is John and I'm 30 years old."
字符串查找和截取
-
字符串查找:
indexOf(searchValue[, startIndex]):返回指定字符串在原字符串中第一次出现的索引位置。如果未找到,则返回 -1。可以通过可选的startIndex参数指定开始搜索的索引位置。lastIndexOf(searchValue[, startIndex]):返回指定字符串在原字符串中最后一次出现的索引位置。如果未找到,则返回 -1。可以通过可选的startIndex参数指定开始搜索的索引位置。includes(searchValue):判断原字符串是否包含指定的字符串。返回布尔值。
var str = "Hello, World!";
console.log(str.indexOf("o")); // 输出 4
console.log(str.lastIndexOf("o")); // 输出 8
console.log(str.includes("World")); // 输出 true
-
字符串截取:
slice(startIndex[, endIndex]):返回从startIndex到endIndex(不包括)之间的子字符串。如果省略endIndex参数,则截取至字符串末尾。substring(startIndex[, endIndex]):返回从startIndex到endIndex(不包括)之间的子字符串。如果省略endIndex参数,则截取至字符串末尾。与slice()方法不同的是,substring()不支持负数索引。substr(startIndex[, length]):返回从startIndex开始的指定长度的子字符串。如果省略length参数,则截取至字符串末尾。
var str = "Hello, World!";
console.log(str.slice(7)); // 输出 "World!"
console.log(str.slice(7, 12)); // 输出 "World"
console.log(str.substring(7)); // 输出 "World!"
console.log(str.substring(7, 12)); // 输出 "World"
console.log(str.substr(7)); // 输出 "World!"
console.log(str.substr(7, 5)); // 输出 "World"
substr和substring的区别
var str = "Hello, World!";
console.log(str.substr(7, 5)); // 输出 "World",从索引位置 7 开始,截取长度为 5 的子字符串
console.log(str.substring(7, 12)); // 输出 "World",从索引位置 7 到 12(不包括 12)之间的子字符串
console.log(str.substr(-6, 5)); // 输出 "World",从倒数第 6 个字符开始,截取长度为 5 的子字符串
console.log(str.substring(-6, -1)); // 输出 "Hello",负数参数会被当作 0,相当于截取从索引位置 0 到 -1 之间的子字符串
总结:substr() 方法使用起始索引和长度来确定截取的子字符串,而 substring() 方法使用起始索引和结束索引(不包括该位置的字符)来确定截取的子字符串。此外,substr() 方法允许使用负数索引,而 substring() 方法将负数索引视为 0。
数组定义、访问、长度
数组的定义:
- 使用方括号([])来定义一个空数组:
var arr = [];
- 在方括号中使用逗号分隔的值来定义一个带有初始元素的数组:
var arr = [1, 2, 3, 4, 5];
数组的访问:
- 使用索引访问数组的元素。数组的索引从0开始,依次递增。例如,要访问数组的第一个元素,可以使用索引0:
var arr = [1, 2, 3, 4, 5];
console.log(arr[0]); // 输出 1
数组的长度:
- 使用
length属性获取数组的长度,即数组中元素的个数:
var arr = [1, 2, 3, 4, 5];
console.log(arr.length); // 输出 5
-
注意,
length属性返回的是数组的长度,即元素的个数,并不是最后一个元素的索引加1。如果数组中存在空洞(未定义的元素),length属性仍然会计算这些空洞,而不是跳过它们。 -
修改数组的
length属性可以改变数组的长度。如果将length属性设置为小于数组当前长度的值,数组将被截断,多余的元素将被删除。如果将length属性设置为大于数组当前长度的值,数组将被扩展,新增的元素将被赋值为undefined。
var arr = [1, 2, 3, 4, 5];
arr.length = 3; // 数组被截断,只保留前3个元素
console.log(arr); // 输出 [1, 2, 3]
arr.length = 7; // 数组被扩展,新增的元素为 undefined
console.log(arr); // 输出 [1, 2, 3, undefined, undefined, undefined, undefined]
对象基础
在 JavaScript 中,对象是一种复合数据类型,用于存储键值对(属性和值)的集合。对象可以通过对象字面量 {} 或通过构造函数创建。
以下是对象基础的一些概念和用法:
-
对象的创建:
- 使用对象字面量
{}来创建空对象:
- 使用对象字面量
var obj = {};
- 使用对象字面量来创建带有属性和初始值的对象:
var person = {
name: "John",
age: 30,
city: "New York"
};
- 使用构造函数创建对象:
var obj = new Object();
-
对象的属性访问:
- 使用点语法(
.)来访问对象的属性:
- 使用点语法(
var name = person.name; // 访问对象 person 的 name 属性
- 使用方括号语法 `[]` 来访问对象的属性,可以使用变量或字符串表示属性名:
var age = person["age"]; // 访问对象 person 的 age 属性
var propertyName = "city";
var city = person[propertyName]; // 使用变量作为属性名访问对象的属性
-
对象的属性赋值和新增属性:
- 使用点语法或方括号语法来对已存在的属性赋值:
person.name = "Jane"; // 将对象 person 的 name 属性赋值为 "Jane"
person["age"] = 35; // 将对象 person 的 age 属性赋值为 35
- 使用点语法或方括号语法来新增属性:
person.gender = "Male"; // 添加新属性 gender
person["occupation"] = "Engineer"; // 添加新属性 occupation
-
对象的属性删除:
- 使用
delete关键字来删除对象的属性:
- 使用
delete person.city; // 删除对象 person 的 city 属性
-
对象的遍历:
- 使用
for...in循环遍历对象的属性:
- 使用
for (var key in person) {
console.log(key + ": " + person[key]);
}
- 使用 `Object.keys()` 方法获取对象的所有属性,并进行遍历:
var keys = Object.keys(person);
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
console.log(key + ": " + person[key]);
}