一、变量名
  • 定义规则
  • 变量名只能以字母和$_两个字符开头,后面可以包括数字。
  • 尽量不要使用其他Unicode字符,避免潜在问题。
  • 最佳实践
  • 避免使用难以识别或有歧义的字符,以便代码更易读和维护。
二、数据类型

JavaScript是弱类型语言,变量类型可以动态改变。

  • 基本数据类型
  1. Number(数值类型)
  • 例如:typeof 1; 返回 "number"
  • 特殊值:NaNInfinity
  1. String(字符串)
  • 例如:typeof "text"; 返回 "string"
  1. Boolean(布尔值)
  • 例如:typeof true; 返回 "boolean"
  1. Object(对象)
  • 包括数组和字面量对象,例如:typeof [1, 2]; 返回 "object"
  • 特殊情况:typeof null; 返回 "object"
  1. Undefined(未定义)
  • 例如:typeof undefined; 返回 "undefined"
  1. Function(函数)
  • 例如:typeof function(){}; 返回 "function"
  • 动态类型示例
var str = "a string";
str = 1; // 变为数值
str = [1, 'str', {'prop': 'val'}]; // 变为数组,数组内可以包含不同类型的数据
  • 1.
  • 2.
  • 3.
三、null 和 undefined
  • 区别
  • null 是一种特殊对象类型,用于表示“没有值”。
  • undefined 是表示变量未定义。
  • 使用场景
  • 在数据库操作中,如果变量未赋值,使用null更合适,因为数据库能识别并存储null
  • 关系
null == undefined // true
null === undefined // false
  • 1.
  • 2.
四、NaN 和 Infinity
  • 定义
  • NaN(Not a Number)用于表示一个非数值的计算结果。
  • Infinity 表示无穷大,通常出现在除以零的情况下。
  • 使用注意
  • NaN 不等于任何值,包括它自己:
NaN == NaN // false
NaN === NaN // false
  • 1.
  • 2.
  • 判断方法
  • 使用isNaN()来检查一个值是否是NaN
isNaN(NaN); // true
isNaN(7); // false
  • 1.
  • 2.
五、操作符
  • 区别
  • == 进行值的比较,允许类型转换。
  • === 进行值和类型的比较,不允许类型转换。
10 == "10"; // true
10 === "10"; // false
  • 1.
  • 2.
六、条件判断
  • 转换规则
  • 以下值在条件判断中会被转换为false
  1. 数值:0(包括-0)和NaN
  2. 字符串:""(空字符串)
  3. 布尔值:false
  4. 对象:null
  5. 未定义:undefined
  • 实际应用
if (var) { 
  // 当 var 不为上述 false 值时,执行此代码块
}
  • 1.
  • 2.
  • 3.
小结
  • 使用!!var1 === !!var2来判断变量是否相等,避免NaN的特殊情况。
  • JavaScript 中有6个值会被转换为false0NaN""falsenullundefined
  • 弱类型和隐式转换可能带来一些意想不到的结果,因此在操作和判断时要格外小心。