关于命名
- 命名规则
以字母、下划线或美元符号打头。
然后使用任意数量字母、数字、下划线或美元符号。
注意不能使用关键字。
注意大小写。
建议采用驼峰式命名法。
关于注释
- 单行注释
// xxxx
- 多行注释
/*
xxxx
xxxx
*/
关于变量
- 变量的生命周期:全局变量的声明周期和网页一样长,局部变量通常在函数结束时消失。
- 使用未声明的变量时,它将自动被视为全局变量,即使你在函数中首次使用它亦如此。
function playTurn(player, location) {
points = 0;
if (location == 1) {
points = points + 100;
}
return points;
}
var total = playTurn("Jai", 1);
alert(points);
- 数组中的所有值的类型可以不相同
- 创建数组的不同方式:
// 方式1
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
// 方式2
var cars=new Array("Saab","Volvo","BMW");
// 方式3
var cars=["Saab","Volvo","BMW"];
关于语句
- 赋值语句总是以分号结束,也可以不指定初始值
var winner = 3;
var losers;
关于类型
undefined:
undefined值的类型是undefined
var x;
if (x == undefined){
// x未定义!处理这种情况
}
没有return语句的函数返回的值;
未赋值的变量的值;
数组中不存在的数组元素的值;
不存在的属性的值;
已删除的属性的值;
创建对象时不能赋给属性的值
null
null表示对象不存在
null的类型是object
NaN
NaN(Not a Number)表示无法表示的数值结果。如:0/0,“food” * 1000,Math.sqrt(-9)
注意:NaN != NaN
检查变量是否是NaN的方式是使用isNaN(变量)
,如下:
if (isNaN(myNum)) {
myNum = 0;
}
NaN的类型是number
关于运算符
=:给变量赋值。
==:将两个值比较,看是否相等,必要时会对操作数进行类型转换,再进行比较。比较两个对象的引用,如果它们相同就返回true,否则返回false。
===:将两个值比较,看是否值相等且类型相同。较两个对象的引用,如果它们相同就返回true,否则返回false。
相等运算符转换操作数:
- 比较数字和字符串,如:
99 == "apple"
,将转换为99 == NaN
,结果为false
- 比较布尔值和其他类型,如:
1 == true
, 将转换为1 == 1
,结果为true
- 比较
null
与undefined
,null == undefined
结果为true
- 特殊情况:
1 == ""
=>1 == 0
=>false
关于类型转换
拼接和加法运算符
只有+
运算符会视为字符串拼接(数字时表示加法运算;字符串时表示拼接),且结合性是从左到右的;-
、*
、\
表示的是算术运算。
var addi = 3 + "4"; // 结果"34"
var addi = 4 + "3"; // 结果"43"
var order = 1 + 2 + "apple"; // 结果"3apple",注意结合是从左到右的
关于真值和假值
除了undefined
、null
、0
、""
、NaN
,其他的值都是真值,当然还有false
。
if(undefined){ // 不执行这些代码 }
if(null){ // 不执行这些代码 }
if(0){ // 不执行这些代码 }
if(""){ // 不执行这些代码 }
if(NaN){ // 不执行这些代码 }
if([]){ // 执行这些代码 }
var e = document.getElementById("elementThatDoesExist");
if(e){ // 执行这些代码 }
if(1){ // 执行这些代码 }
var s = "hello"
if(s){ // 执行这些代码 }