//流程控制-选择语句
var a = "123";
switch (a) {
case 123:
window.document.writeln("数字");
break;
case "123":
window.document.writeln("字符串");
break;
}
//流程控制-循环语句
var c = 1;
var csum = 0;
while (c < 101) {
csum += c;
c++;
}
window.document.writeln(csum);
var sum = 0
for (var i = 0; i < 101; i++) {
sum += i;
}
window.document.writeln(sum);
var x = new Array();
x[0] = "1"; x[1] = "2"; x[2] = "3";
//这里的i是key与C#不同foreach不同,与c#
for (var i in x) {
window.document.writeln(x[i]);
}
//流程控制-条件语句
if (a == "123") { window.document.writeln("相等"); }
//其它
var b = 1 == 2 ? 1 : 2;
window.document.writeln(b);
//eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
var x1 = 1;
var x2 = 2;
var x3 = 3;
for (var i = 1; i < 4; i++) {
alert(eval("x"+i));
}
数据类型共六种:
Boolean(布尔)、Number(数字)、String(字符串)、Undefined(未定义)、Null(空对象)、Object(对象类型)
除了Object是引用类型以外,其他都是基本数据类型
Undefined类型、Null类型都是只有一个值的数据类型,分别为undefined与null.
基本类型与引用类型的区别
String也是基本类型,不能为String添加动态属性,而引用类型是可以的。
JavaScript中的null与undefined(参考资料)
undefined,表示一个未知状态
声明了但是没有初始化的该变量,变量的值是一个未知状态(undefined)。 (访问不存在的属性或对象window.xxx)
方法没有明确返回值时,返回值是一个undefined.
当对未声明的变量应用typeof运算符时,显示为undefined(*)
null表示尚未存在的对象,null是一个有特殊意义的值。可以为变量赋值为null,此时变量的值为“已知状态”(不是undefined),即null。(用来初始化变量,清除变量内容,释放内存)
undefined==null //结果为true,但含义不同。
undefined===null //false(*),先判断类型是否一致,然后判断值。
===严格等于、!==严格不等于
var x = [1, 2, 3];
var xx = { "nam": "xhc", "age": "18" };
alert(x instanceof (Array));
alert(typeof (x));
对于instanceof和typeof,以前偶尔的用到过,特别是typeof用到的相对更多一些,今日研究ext源码,很多地方都用到了instanceof,突然觉得他们两个有些相似但也应该有他们区别,网上看了一些文章,对它们之间的关系有了一定的了解。
instanceof和typeof都能用来判断一个变量是否为空或是什么类型的变量。
typeof用以获取一个变量的类型,typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefined。我们可以使用typeof来获取一个变量是否存在,如if(typeof a!="undefined"){},而不要去使用if(a)因为如果a不存在(未声明)则会出错,对于Array,Null等特殊对象使用typeof一律返回object,这正是typeof的局限性。
如果我们希望获取一个对象是否是数组,或判断某个变量是否是某个对象的实例则要选择使用instanceof。instanceof用于判断一个变量是否某个对象的实例,如var a=new Array();alert(a instanceof Array);会返回true,同时alert(a instanceof Object)也会返回true;这是因为Array是object的子类。再如:function test(){};var a=new test();alert(a instanceof test)会返回true。
谈到instanceof我们要多插入一个问题,就是function的arguments,我们大家也许都认为arguments是一个Array,但如果使用instaceof去测试会发现arguments不是一个Array对象,尽管看起来很像。
jS有垃圾回收机制,会定时对可释放资源的变量回收。将变量设置为null则表示可以被回收了。