JavaScript快速入门笔记(4):表达式

本系列随笔是本人的学习笔记,初学阶段难免会有理解不当之处,错误之处恳请指正。转载请注明出处:https://www.cnblogs.com/itwhite/p/12218024.html。

基本表达式

JavaScript 支持的操作符列表:

+ - * / % ++ --
= += -= *= /= %=
== === != !== > < >= <= ?
&& || !
& | ~ ^ << >> <<<
typeof instanceof

其详细介绍请参考:W3Schools: JavaScript Operators

 

== 与 === 的区别

其中:

  • == 操作符用于比较两个值(可以是表达式)是否相等
  • === 操作符比 == 更加严格,它还会检测两个值的类型是否相同

示例:

var n = 123;
var s = "123";
alert(n == s);      // true
alert(n === s);     // false
alert(n === 123);   // true
alert(s === "123"); // true
alert(null == undefined);  // true
alert(null === undefined); // false

 

正则表达式

JavaScript 采用 Perl 中正则表达式的语法,格式:

/pattern/modifiers

示例:

var s = "https://www.baidu.com/";
if (/www\.\S+\.com/i.test(s)) { // 判断字符串与正则式是否匹配
    console.log("String " + s + " matches the pattern");
    var pattern = /(https?):\/\/www\.([^\/]+)/i;
    var groups = pattern.exec(s);      // 获取分组,返回一个数组,第0个元素为完全匹配的内容,其余依次为各个分组的内容
    console.log('URL: ' + groups[0]);      // https://www.baidu.com 注意这里没有右斜线
    console.log('Protocol: ' + groups[1]); // https
    console.log('Domain: '   + groups[2]); // baidu.com
}

 

in 运算符

in 运算符配合 for 语句可以遍历数组元素和对象键值列表,也可以单独使用用于判断对象中是否包含某个属性,例如:

// 1. 遍历数组元素,in 的左操作数返回数组下标值
var list = ["Jack", "Bob", "Linda", "Lily"];
for (var i in list) {
    var name = list[i];
    console.log(name);
}

// 2. 遍历对象属性,in 的左操作数返回对象属性名
var person = { name: "Jack", gender: "male", age: 23 };
for (var attr in person) {
    var value = person[attr];
    console.log(attr + ": " + value);
}

// 3. 判断某个属性是否存在于对象中,左操作数为属性名
if ("name" in person) {  // true
    console.log("name in person");
}
if ("class" in person) { // false
    console.log("class in person");
}

// 4. 判断数组是否包含某个下标值,左操作数为下标值(而不能是数组元素值)
if (1 in list) {  // true
    console.log("1 in list");
}
if (4 in list) { // false
    console.log("4 in list");
}
// 注意:上面判断数组是否包含某个下标,要想判断是否包含某个值,可以用 Array 的 includes() 方法,例如:
if (list.includes("Bob")) { 
    console.log("Bob is in list");
}

 

delete 运算符

JavaScript 中的 delete 操作与 Perl 中类似,可以用来删除对象的属性,也可以用来删除数组元素(把数组当做一个对象的话,每个下标都是一个属性,delete只删除下标属性,不改变length属性)。例如:

var person = { name: "Jack", gender: "male", age: 23 };
delete person.gender;   // "gender" 属性将被删除
console.log(Object.keys(person).length); // 2
for (var attr in person) {
    var value = person[attr];
    console.log(attr + ": " + value);
}

var list = ["Jack", "Bob", "Linda", "Lily"]; // 可以看做是: { 0:"Jack", 1:"Bob", 2:"Linda", 3:"Lily", length:4 }
delete list[2]; // 删除 "Linda" 元素,相当于删除了数组对象中的属性"2",但并不会修改数组长度属性 length
console.log(list.length);   // 4
for (var i in list) {   // 这里 i 分别为 0, 1, 3
    var name = list[i];
    console.log(name);
}

 另外,delete 的使用也是有一些限制的,比如:

  • delete 只能删除对象的自有属性,不能删除继承而来的属性。
  • delete 不能删除那些可配置性为 false 的属性,例如:Object.prototype、用户声明的全局变量或函数(这些作为“全局对象”的属性存在),例如:
// 通过声明方式创建的全局变量和函数不能删除
var v = 123;
function f() {}
console.log(delete this.v);  // false
console.log(delete this.f);  // false

// 通过下面这种方式创建的,则可以删除
this.v2 = 456;
this.f2 = function(){};
console.log(delete this.v2); // true
console.log(delete this.f2); // true
View Code

 

完。

你可能感兴趣的:(JavaScript快速入门笔记(4):表达式)