Javascript的一些零碎知识

时间:2023-02-13 08:36:38

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]      

参考资料:

深入认识javascript中的eval函数

javascript不同类型对象比较规则

浅谈JavaScript 的运行机理