标识符

区分大小写,可以以下划线 _、美元符号 $ 或字母开头,不能以数字开头。用中文命名变量也合法。

保留字

void break delete function return do case if switch var catch else in this continue false instanceof throw while debugger finally new true const default for null try 等。

变量

通过 var 来定义;未用 var 声明则为全局变量,和 Lua 的 local 类似。

注释

采用标准 C 语言的注释方式:/* *///

数据类型

包括数值、字符串、对象类型、数组类型、布尔类型等。

数值类型

支持十进制、八进制等,和 C 语言类似。浮点数必须包含一个小数点或一个 E/e

布尔类型

false / true

字符串

"123"'123'

对象类型

new 来创建一个对象。

数组类型

Array 是一个数组对象,例如 var arr = new Array(10) 创建大小为 10 的数组。由于 JavaScript 是弱类型脚本语言,数组也支持混合类型:

var arr= new Array(10);
arr[0]="123";
arr[1]=12;

字面常量

  • 12 — 整数
  • 1.2 — 浮点数
  • "hello" — 字符串
  • true — 布尔
  • {x:50,y:100} — 对象
  • null — 空对象(不存在任何对象)
  • [1,2,3] — 数组对象

类型转换

转换为字符串

使用 toString 函数。

转换为数字

使用 parseFloatparseInt(arg, to)to 表示目标进制)等函数。注意:会自动剔除非法字符后返回有效部分。

console.log(parseInt("123ab2",10));//输出10进制123
console.log(parseInt("0xB",10));//输出11,parseFloat不能用16进制转换

可用全局函数 isNaN(ARG) 来检测是否为 NaN

强制转换

console.log(Boolean(0.0));// 每种数据类型的false 否转换为false 如整数的0,浮点的0.0,
//字符串的"" , 对象的null 等,其余都为true
console.log(Number("1211yey"));//返回Nan,非法数据都会直接返回Nan而不是返回有效部分
//(字符串"0xa" 之类的有效)

运算符

规则与 Java 类似,但由于是弱类型语言,有以下特殊之处:

var int =5.5;int %=2; // int为1.5
var int =5.0;int %=2; // int为1
//除法同理
//能是整数,则优先为整数比如2.5*2 为5 而不是5.0

关系运算符

大多数和 Java、C 相同,需要特别说明的是:

== :等于(不包含类型) 如5==5.0 为true , 5=="5" 也为true
===: 等于(包含类型) 如5===5.0 为true,5==="5" 为false 因为类型不能
!= !== 同理

位运算

与 Java、C 相同,支持反码、补码等。浮点数会先去掉小数部分再运算。

var x=-1;
var y=0xff;
console .log( x&y); 输出255//0xff & 11111111( 10000001 取反+1)
//0xff &0xff = 0xff

位运算只支持 32 位整数,而 Number 内部是 64 位浮点数,无论是整数还是小数都要注意精度误差问题。

var x=0xffffffff;//32位
console.log((x>>>1)); // 无符号右移,证明32位

var x=0xffffffffffff; // 48位
console.log((x>>>1));//无符号右移,证明32位
var y=0xfffffffffffff;//7字节
console .log( y-1);
console .log( y);
console .log( y+1);
//结果正常

instanceof 运算符

返回 Boolean 值,用于判断对象是否是某类型的实例。

var arr = new Array(10);
var ty=  arr instanceof  Array; //arr 是否是Array 的对象
console.log(   ty);

typeof 运算符

返回字符串,表示操作数的类型。

var arr = new Array(10);
console.log( typeof (typeof arr));//输出string
console.log(typeof arr);//输出object

控制与循环语句

ifswitchforwhiledo while 与 Java、C 相同。

//for in遍历集合和对象(和lua的pairs ipairs类似)

var arr= [2,1,2,3,4,5,6,7,8,9];

for( var i=0 ; i<arr.length;i++)
{
    console.log( arr[ i]);
}

for( var i in arr)
{
    console.log( arr[ i]);//i为index
}

函数

有三种方式定义函数,调用方式为 func(5)

 function func(ARG)//局部函数
{
    console.log(ARG);
}

var func= function (ARG) {//局部函数
    console.log(ARG);
}

func= function (ARG) {  //全局函数
    console.log(ARG);
}