javascript查缺补漏之二 ——《语法与类型》
/ / 点击 / 阅读耗时 3 分钟在 JavaScript 中大小写敏感,变量 früh 和 Früh 则是两个不同的变量。
当你对一个 null 变量求值时,空值 null 在数值类型环境中会被当作0来对待,而布尔类型环境中会被当作 false。
局部变量:在函数内部声明的变量。
函数提升:只有函数声明会被提升到顶部,而不包括函数表达式。
对象属性和数组元素不受保护,可以使用
const
来声明对象名或数组名1
2
3
4
5
6const MY_OBJECT = {"key": "value"};
MY_OBJECT.key = "otherValue";
const MY_ARRAY = ['HTML','CSS'];
MY_ARRAY.push('JAVASCRIPT');
console.log(MY_ARRAY); //logs ['HTML','CSS','JAVASCRIPT'];Object.prototype.toString()
每个对象都包含一个
toString()
属性,默认情况会返回 “[object type]”(注意!!!此处返回值确实会带着引号),其中type是对象的类型。可以在对象中重写
toString()
来覆盖默认返回值。给一个对象定义属性和值的一个不常用的写法:
1
2let a = {};
Object.defineProperty(a, mySymbol, { value: 'Hello!' });魔术字符串
魔术字符串指的是,在代码之中多次出现、与代码形成强耦合的某一个具体的字符串或者数值。
for in
vsObject.keys
vsObject.getOwnPropertyNames
for in
:用来获取某个对象(该对象)及其原型链上的可枚举属性。如果仅想获取该对象自身的属性,要借助hasOwnProperty
方法。1
2
3
4
5for (var key in child) {
if (child.hasOwnProperty(key)) {
console.log(key);
}
}
- `Object.keys` :用来获取某个对象自身的可枚举属性。其效果等于`for in` + `hasOwnProperty`。
- `Object.getOwnPropertyNames` : 用来获取某个对象自身可枚举以及不可枚举的属性(不可获取以symbol命名的属性名)。
不要混淆原始的布尔值true和false与 Boolean对象的真和假
1
2
3var b = new Boolean(false);
if (b) // this condition evaluates to true
if (b == true) // this condition evaluates to false
全文完。