Javascript的一些零碎知识
1. 定义函数的时候,参数不要定义数据类型。比如:
1 function test(var s) 2 { 3 alert(s); 4 }
上述代码这样会导致加载页面的时候,js就无法正确解释,会出现错误提示信息:缺少标识符。
2. javascipt没有java中重载的概念,如果2个函数的名字一样,参数个数却不一样,其中后面的函数会覆盖前面的函数。举例如下:
1 function test(s1) { 2 alert(s1); 3 } 4 function test(s1, s2) { 5 alert(s1 + "," + s2); 6 } 7 test("1");
上面代码的运行结果是:1,undefined。 javascript并不会调用只有一个参数的test函数。
3. 当js代码放在jsp中时,由于js的是随jsp页面一起加载的, 所以js代码块里可以调用jsp表达式或者使用标签。但是如果js作为source放在单独的文件中,我们就不能在js代码块里使用jsp表达式。原因是js是由浏览器通过另外一个线程来加载的,这个可以通过HTTPWatch观察。
4. 获取js内置数据类型的方法:
1 function getType(obj) { 2 return obj == null ? obj + "" : Object.prototype.toString.call(obj).slice(8,-1); 3 }
5. eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。要特别注意的是对象声明语法"{}"并不能返回一个值,需要用括号括起来才会返回值。
1 var code1 = '{"a":2}'; //声明语句 2 alert(eval(code1)); // 运行报错 3 alert(eval('(' + code1 + ')')); // [object Object] 4 var code2 = {"a":2}; 5 alert(eval(code2)); // [object Object]
参考资料: