JavaScript学习笔记2
基于youtube JavaBrain视频系列 - JavaScript for Developers Unit02
I. 变量
变量的声明和赋值(Declaration and Definition)
var value = 42;
或者var value; value = 42;
JavaScript是弱类型语言,没有变量类型,声明变量时不需要指明类型
这不同于强类型语言(e.g. C/Java/C++)
任何类型都可以赋给某个变量,而且可以前后分别赋给不同的类型
II. Primitive Types
JavaScript一共有五种基础变量类型(Primitive Types)
(1) Number: 包括了其他语言中一般数字类型,int, double, float。在JavaScript中使用64位双精度储存
比如 var a = 1; 实际在JS中表示为1.0000...
Q: Is 42 equal to 42.0? 无论使用双等还是triple equal, 42都等于42.0
(2) String: JS没有char类型来代表单个字符。String类型使用16位unicode储存
(3) Boolean: true or false
(4) Undefined: 只有一个值“undefined”,注意结尾有d
undefined是指变量声明(declaration)了但是没有赋值(definition),即var value;之后,value声明了但是未赋值,这时打印value为"undefined"
(5) Null: 也只有一个取值“null”
*(6) Symbol: EMCAScript6新增加的类型,类似于其他语言的枚举类型
Q
III. Difference between Undefined and Null
not saw it v.s. not applicable
IV. Types Summary
1. No need to declare type for a variable
2. A variable can be assigned to different types
3. No scoping information,不同于Java语言没有public, private等变量范围声明
4. Variables are interrogated,由于属于弱类型语言,变量在操作时需要知道与它进行操作的变量是什么类型,必要时需要进行自动的类型转换
e.g. 123 + “4” => "1234"
V. "typeof", "==", "===" Operators
1. "typeof"可应用于变量或者值
2. "=="在JS中是意等,不同变量比较的结果基于类型转换的结果
3. “===”相当于其他语言的双等号,比较时同时对变量类型和它们的值
VI. Type Coercion and Summary
1. 每种变量类型的具体值在JS中都有与其对应的布尔值
null, undefined, 0, ""对应于布尔值的false,即使用这些值与false进行双等比较时,结果将为true
2. 通过这种特性,可以直接使用变量作为判断条件。而Java不允许使用非布尔型变量或者式子作为判断条件
e.g. 在Java中使用
int a = 0;
if (a) { //编译错误,使用a+b(b也为int类型)等也会出现编译错误
// code here
}
在JS中则会根据变量的类型转换结果来进行条件判断