本文将记录学习JavaScript(包含有ES)语法基础,主要来自MDN的官方文档
语法和数据类型
最新的 ECMAScript 标准定义了8种数据类型:
- 七种基本数据类型:
- 布尔值(
Boolean
),有2个值分别是:true 和 false. null
, 一个表明 null 值的特殊关键字。 JavaScript 是大小写敏感的,因此null
与Null
、NULL
或变体完全不同。undefined
,和 null 一样是一个特殊的关键字,undefined 表示变量未定义时的属性。- 数字(
Number
),整数或浮点数,例如: 42 或者 3.14159。 - 任意精度的整数 (
BigInt
) ,可以安全地存储和操作大整数,甚至可以超过数字的安全整数限制。 - 字符串(
String
),字符串是一串表示文本值的字符序列,例如:”Howdy” 。 - 代表(
Symbol
) ( 在 ECMAScript 6 中新添加的类型).。一种实例是唯一且不可改变的数据类型。
- 以及对象(
Object
)。
运算细节
你可以使用 undefined
来判断一个变量是否已赋值
|
undefined
值在布尔类型环境中会被当作 false
数值类型环境中 undefined
值会被转换为 NaN
当你对一个 null
变量求值时,空值 null
在数值类型环境中会被当作0
来对待,而布尔类型环境中会被当作 false
在包含的数字和字符串的表达式中使用加法运算符(+),JavaScript 会把数字转换成字符串
|
在涉及其它运算符(译注:如下面的减号’-‘)时,JavaScript语言不会把数字变为字符串
|
对象字面量
对象字面值是封闭在花括号对({})中的一个对象的零个或多个”属性名-值”对的(元素)列表。
对象属性名字可以是任意字符串,包括空串。如果对象属性名字不是合法的javascript标识符,它必须用””包裹。属性的名字不合法,那么便不能用.访问属性值,而是通过类数组标记(“[]”)访问和赋值。
|
|
ES2015新增模板字面量,直接打印出多行字符串。
|
流程控制与错误处理
判断语句的小细节
其值不是undefined或null的任何对象(包括其值为false的布尔对象)在传递给条件语句时都将计算为true
这里我们以Boolean对象为例子:
如果需要,作为第一个参数传递的值将转换为布尔值。如果省略或值0,-0,null,false,NaN,undefined
,或空字符串(""
),该对象具有的初始值false
。所有其他值,包括任何对象,空数组([]
)或字符串"false"
,都会创建一个初始值为的对象true
。
注意不要将基本类型中的布尔值 true
和 false
与值为 true
和 false
的 Boolean
对象弄混了,不要在应该使用基本类型布尔值的地方使用 Boolean 对象。
|
正确使用途径
不要用创建 Boolean
对象的方式将一个非布尔值转化成布尔值,直接将 Boolean
当做转换函数来使用即可,或者使用双重非(!!
)运算符:
|
switch 语句
同java,c++
异常处理语句
你可以用 throw
语句抛出一个异常并且用 try...catch
语句捕获处理它。同Java语法差不多。
循环与迭代
forEach
foreach里面不支持break,continue,
|
for…in
for…in 语句循环一个指定的变量来循环一个对象所有可枚举的属性。JavaScript 会为每一个不同的属性执行指定的语句。
for…of
for…of 语句在可迭代对象(包括Array、Map、Set、arguments
等等)上创建了一个循环,对值的每一个独特属性调用一次迭代,对象属于object,不可迭代。
所以for of 则无法迭代js的object属性值
|
for … in循环将把foo包括在内了,但Array的length属性却不包括在内,所以length还是3.
这是MDN官方文档的解释,多看几遍就能理解,其实for in会把array作为一个对象来打迎打所有的属性,而for of则只对可迭代的对象进行遍历,也就是这里面的array了,这也能解释为什么foreach也只能打印数组元素了。
两者区别参考了博客for…in和for…of的用法与区别1和for…in和for…of的用法与区别2