因为cocos2d-x游戏开发要用到JS,所以开始学习一下JS.
其实JS大部分语法和c类似,注释为'//','/* */',需要注意的地方是JS中的变量不需要声明就可以使用.语句末尾可以加';',也可以不加.也没有整数和浮点数之分,所有的类型都是对象.可以使用typeof 变量/常量 得到类型.这里有几点需要注意.
(1).对于var x;这种没有初始化的变量,x的类型是Undefined,而Undefined只有一个值,就是undefined.而Undefined的类型变量并不代表着这个变量没有定义.
例:var x;
alert(typeof x);
alert(typeof y);
这里两者都输出undefined.
进一步如果这样写
if(x==undefined) alert("true");//x是未定义的变量
else alert("false");
但是如果x定义了.
var x;
if(x==undefined) alert("true");//x是已定义的变量
else alert("false");
就会输出true.
说明不管是否定义,都可以使用typeof,但是未定义的不能使用其他运算符.
(2)对于null和undefined,我刚开始并不知道有undefined这种值,所以下意识的以为它指的就是null,然后才发现其实并不是,Null指的其实就是前面说的未定义的变量,它有专用值null,而输出类型是undefined,undefined是从null派生来的.null表示尚未存在(定义)的对象.如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是null.
总结:没有定义或者不存在的变量值为null,而定义了的没有指定类型的变量,值为undefined.
关于特殊值.
(1)JS中提供一些宏表示特殊值,首先所有的Number都在[Number.MAX_VALUE, Number.MIN_VALUE]之间,而经过计算生成的结果可以不在这两个值之间.
当数字大小大于Number.MAX_VALUE 时,它将被赋予值 Number.POSITIVE_INFINITY,意味着正无穷,而当数字小于Number.MIN_VALUE时,它将被赋予Number.NEGATIVE_INFINITY,表示无穷小.他们分别等于Infinity和-Infinity.
var iResult = iNum * some_really_large_number;
if (isFinite(iResult))
{
alert("finite");
}
else {
alert("infinite");
}
isFinite(x)可以判断数字是否是有穷的.
正无穷和负无穷都不能参与运算.
(2)NaN,一个与自身不相等的特殊值.(= =!)
例如输出 alert(NaN==NaN); 输出为false