Javascript学习过程(二)
1)在学习Javascript过程中避免不了要输出一些测试结果,一般的作法是使用alert来显示,但是alert函数是一个单参的,为了可以方便测试,可以使用控制台输出,console.log(arguments);在chrome中可以打开devtool查看控制台。
2)使用script标签时,要注意使用</script>,而不要用直接在开始标签中用/,可能会出现某些无法解析,比如src解析不了
3)对于自定义对象的属性的访问:
function Person(name, age) { this.name = name; this.age= age; this.friends = ["Shelby", "Court"]; } var Person1 = new Person("Kin", 21); console.log(Person1.age); console.log(Person1["age"]);
4)对于JavaScript中的function说明,可以参考:http://www.bootcss.com/article/variable-and-function-hoisting-in-javascript/ 所以在使用function时一定要把声明和赋值都显示放在函数的开头。
5)关于script标签应该放在哪里?参考:https://book.douban.com/reading/17295337/
其实如果只是一般的放在head标签里面的话,有时会出现问题,因为浏览器解析文档的时候是自上而下依次解析的,所以在这种情况下会出现两种比较不好的情况,第一就是这种地,会导致必须等到全部JavaScript代码都被下载,解析和执行完成以后,才能开始呈现页面的内容(浏览器在遇到<body>标签时才开始呈现内容),这样会导致显示延迟;第二就是对于在JavaScript中使用到的DOM节点来说,会出现未定义的现象,特别是在定义事件的时候。例子如下:
<!-- index.html--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="./index.js"> </script> </head> <body> <form action="" method="get"> <input type="button" value="test" id="myBtn" /> </form> </body> </html> //index.js var myBtn = document.getElementById("myBtn"); myBtn.addEventListener("click", function(event) { alert(event.target.id); }, false);
运行上述代码后会出现
解决方法:1)可以将script标签统一放到</body>之前,而不是head里面
2)可以使用script标签的defer属性来延迟脚本的运行,使其在整个页面解析完毕(遇到</html>时才开始运行,相当于告知浏览器立即下载,但延迟解析和执行。
备注:对于JavaScript中的代码是从上至下依次解析,但会有函数声明提前的现象