javascript是解释执行的客户端的基于对象和事件驱动的动态语言,解释型的语言并不需要对其进行编译,只是从上到下直接执行即可。
在js中,函数就是对象,例如可以向如下这样写代码,但是平时不常用
var test02 = new Function("a","b","alert(a+b);");
通过上面的代码还可以看出,函数里的形参可以不写var声明,因为js是弱类型,传进来的参数一定是var,所以可以不写
还可以向下面这样用函数,
var ttt = "chengyuan"; function test() { var aa="jubu"; bb='weichengyuan'; alert(aa); } function test2(){ alert(ttt); } function test3(){ var t1=true; var t2="true"; if(t1==t2){ alert("true"); }else{ alert("false"); } } function test4(){ alert("true"==1); } function test5(){ alert(Number("true")); } function test6(param){ param(); } </script> </head> <input type="button" value="test1" onclick="test();"/> <input type="button" value="test2" onclick="test2();"/> <input type="button" value="test3" onclick="test3();"/> <input type="button" value="test4" onclick="test4();"/> <input type="button" value="test5" onclick="test5();"/> <input type="button" value="test6" onclick="test6(test2);"/> <body>
test6()里传入的是函数的名字,然后在函数体内加上括号就可以执行这个方法。上面的其它方法也具有代表意义,可以看看。
上面的代码输出依次为
不得不说的是NaN,他的意思是Number is not a Number,当将一个不能转为数字的js变量转为Number时,就会出现NaN类型,它是唯一一个自己不等于自己的类型,NaN类型也不可能等于别的类型的值。
js有6种类型,分别为string,object,Number,boolean,null,undefined,其中,null是undefined的衍生类;常用的有 String boolean Number。
可以通过typeof(变量名)来得到变量的类型。
“==”和“===”的差别:
==等值符 发生类型的自动转换
===等同符 不发生类型的自动转换,比较的时候先比较typeof的值
进行比较的时候 String boolean Number
类型相同
直接进行比较
类型不同
发生类型转换,同时向Number靠拢,调用Number方法
用+进行两个类型相加时,遇到string类型的变量时整体全部变为string,这个与java语法很相近,但是需要明确指定的是javascript和java并没有任何关系。而且,js不支持重载,当有多个名字相同的函数时,这个函数实际上是最后一个相同名字的函数,前面的函数永远不会被执行,因为它们被覆盖了。
现在有一个function如下:
function test8(){ alert(Number("123.345")); alert(parseInt("123.a45")); alert(parseFloat("123.a45")); alert(parseInt("a123.456")); }
输出的结果为:123.456
123
123
NaN
这是因为对值进行解析的时候是从左边一位一位解析的,当遇到了不能解析的字符时就停止解析,所以第四个的结果刚刚解析就碰到了这个问题,故出现了NaN。
function test(a,b,c){
}
其中,test.length表示形参的个数。
arguments.length表示的是实参的个数,当某个形参的个数为3个时,可以向其传大于3个的实参,这时后面的参数将会被 无视,当向其传入2个实参时,alert时会出现NaN,因为第三个没有传入的实参被 自动的附于了undefined类型。
还有如下的情况,代码如下:
<a href="javascript:void(0);" onclick="test01();">test01</a>中"javascript:void(0);" 这个方法常用,用于将这个超连接指向当前页的当前位置。
<input type="button" value="一个事件两个方法" onclick="test01();test02();"/>
一个事件要两个方法的写法如上。
eval() 函数可计算某个字符串,并执行其中的 JavaScript 代码。
代码如下:
function test9(){ var c="abcd"; var a = "var b=c" eval(a); alert(b); }
输出结果为abcd
function test10(){ var a ="[1,2,3,4,5,6]"; eval("var dd = "+a); alert(dd[7]); }
输出结果为undefined
function test11(){ var arr = "[1,2,3,4,5,6]"; eval("var dd = "+arr); alert(dd[3]); }
输出结果为3
js定义数组:
var arr = new array();
或者var arr = [1,2,3,4];
或者var arr = new array(10);
需要注意的是,JS里面定义的数组的长度是可变的,这和java的数组是有区别的