willson-wang / Blog

随笔
https://blog.willson-wang.com/
MIT License
70 stars 10 forks source link

根据MDN来回顾javascript基础知识 #34

Open willson-wang opened 6 years ago

willson-wang commented 6 years ago

1. 未赋值的变量,初始值未undefined、需要使用 x === undefined来进行判断,需要注意的是,undefined值在布尔环境中会被当做false,在数值环境中会被转化为NaN;另外需要注意的是null在布尔环境中与undefined一样转化为false,但是在数值环境中会被转化为0;

var x;
if (!x) { //为false
}

x + 2 // NaN

var a = null;

if(!a) {
}

a + 2 // 2

2. 单目加法运算符,将字符串数字转化为数字

'1.1' + '1.1' = '1.1.1.1';
+'1.1' + 2 = 3.1;
+'12a' => NaN

3. 对象字面量,需要注意的是对象属性名字可以是任意字符串,包括空串。如果对象属性名字不是合法的javascript标识符,它必须用""包裹。属性的名字不合法,那么便不能用.访问属性值,而是通过类数组标记("[]")访问和赋值;

var unusualPropertyNames = {
  "": "An empty string",
  "!": "Bang!"
}
console.log(unusualPropertyNames."");   // 语法错误: Unexpected string
console.log(unusualPropertyNames[""]);  // An empty string
console.log(unusualPropertyNames.!);    // 语法错误: Unexpected token !
console.log(unusualPropertyNames["!"]); // Bang!

4. 超长字符串写法,建议使用es6模板字符串写法

// 使用 \符号来进行换行书写,最终的字符串还是单行,实际上斜线和换行都不会出现在字符串的值中
var str = "this string \
is broken \
across multiple\
lines."
console.log(str);   // this string is broken across multiplelines.

// 使用换行符\n + \来书写多行字符串
var poem = 
"Roses are red,\n\
Violets are blue.\n\
Sugar is sweet,\n\
and so is foo."
console.log(poem); 
Roses are red,
Violets are blue.
Sugar is sweet,
and so is foo.

5. 常用的特殊字符

\n | 换行符
\t | Tab (制表符)
\v | 垂直制表符
\' | 单引号
\" | 双引号
\\ | 反斜杠字符(\)

6. 在布尔环境中会被转化为false的6个值,false、0、‘’、undefined、null、NaN;

7.