学习链接: javascript.info
JS基础知识
运算符
算数运算符
算术运算符使用数值 (字面量或者变量) 作为操作数并返回一个数值。标准的算术运算符就是加减乘除 (+ - * /)。当操作数是浮点数时,这些运算符表现得跟它们在大多数编程语言中一样(特殊要注意的是,除零会产生Infinity。
- 加号
- 两边都是数值类型时进行求和运算,如果数值+布尔值会直接把布尔类型转换成 1 or 0 来进行运算
- 字符串+任何类型数据 = 拼接之后的新字符串
- 可以将“数值字符串”转成 数值,比如 +'1'
比较运算符
在比较不同类型的数据时,JS会把他们转换为数字再判定大小,但有一个特例,null == undefined,在非严格相等的情况下,这两者只等于对方,与其他不相等。
非严格相等与大于小于运算符是两个独立的逻辑,因此会出现以下情况
null == undefined //true
null === undefined //false
null == 0 //false null只和undefined非严格相等
null >= 0 //true null转换为数字0,因此满足大于等于0
undefined
undefined不应该和其他值进行比较,因为它在比较的时候被转换为了NaN, 而NaN是一个特殊的数值,它与任何其他值进行比较都会返回false。
undefined只与null相等
undefined == 0 //false
undefined >= 0 //false
什么时候为undefined
- 声明后的变量未初始化
- 访问一个对象不存在的属性会返回
undefined - 在调用函数时缺省参数,则该参数为undefined
- 在JavaScript中,没有任何
return语句的函数隐式地返回undefined - void运算,返回
undefined - 访问数组中不存在的元素(比如下标超出界限),返回
undefined
如何安全的获取undefined的值
使用void运算符
let a = void 1;
void
void运算,计算一个表达式,不返回计算结果,所以返回值为undefined
void 1; // => undefined
void (false); // => undefined
void {name: 'John Smith'}; // => undefined
void Math.min(1, 3); // => undefined
函数声明与函数表达式
函数是一种特殊的值,可以通过函数声明的方式进行创建,也可以通过函数表达式的方式进行创建。
注意: 函数声明在被定义之前,就可以被调用。因为JS准备运行脚本时,首先会在脚本中寻找全局函数声明,并创建这些函数。在处理完这些函数声明后,代码才会被执行。所以运行时能够使用这些函数。如果是函数表达式的形式,则不会被提前调用,因为函数表达式只有在代码执行到它时才会被创建。
对象
创建对象有两种方式:
- 构造函数的语法
let user = new Object() - 字面量的语法
let user = {}
对象的属性
对象可以使用 对象.属性的方式来获取属性的值,如果属性包括空格、以数字开头或包含特殊字符时,只能使用方括号来获取属性值
user.name = 'xiaoming'
user["likes bird"] = true
方括号
当创建一个对象时,我们可以在对象字面量中使用方括号,这叫做计算属性
let name = prompt("what is your name?", "xiaoming");
let user = {
[name]: 5, //属性名是从name变量中得到的
}
上面的写法与下面的语法效果相同:
let name = prompt("what is your name?", "xiaoming");
let user = {};
user[name] = 5;
属性名
对象的属性命名没有限制,可以使任何字符串或者symbol,其他类型会被自动转换为字符串,例如,当数字0被用作对象属性的键时,会被转换为'0'
let obj = {
0: "test"
}
alert(obj[0]) //test
alert(obj['0']) //test
判断属性是否存在
语法"key" in Object,返回true或者false