今天之举两个例子:
1. String 对象.
javascript 中提供了String用来进行字符串操作,但是我并不喜欢这个东西,请看下面的例子.
- <html>
- <head>
- <title> new document </title>
- <script type="text/javascript">
- function isEquals(){
- var s = "abc";
- var s1 = new String("abc");
- if(s === s1){
- alert("yes!");
- }else{
- alert("no!");
- }
- }
- </script>
- </head>
- <body>
- <input type="button" value="test!" οnclick="isEquals()" />
- </body>
- </html>
问题就出在new上, 它让字符串又创建了一个空间内存空间, js与java不同字符串的比较没有equals方法,只能用== / ===比较. 所以当出现new时要仔细考虑一下,
2. 与html混合.
- <script type="text/javascript">
- function mytest_error(){
- var s = '<input type="button" value="test!" οnclick="test("a","b")" />';
- document.write();
- }
- </script>
这里的字符串是个不折不扣"隐形"的错误. οnclick="test("a","b")" /> 这两个参数 会扰乱html的解析.
应该改为:
- <script type="text/javascript">
- function mytest_error(){
- var s = '<input type="button" value="test!" οnclick="test(/'a/',/'b/')" />';
- document.write();
- }
- </script>
3. 结束符号
- <html>
- <head>
- <title> new document </title>
- <script type="text/javascript">
- function mytest_error(){
- var s = 'http://www.cadn.net/test.php?name=hello'
- +'&age=10';
- +"&count=12"
- alert(s);
- }
- </script>
- </head>
- <body>
- <input type="button" value="test!" οnclick="mytest_error()" />
- </body>
- </html>
怎么最后的参数没有了? 这样是不会报错的.但是它确实错了. 能找到原因吗? 呵呵!