作者:Longbill
网页模板: http://slides.html5rocks.com/
请使用Chrome浏览器。
左右箭头或鼠标滚轮翻页
<html> <body> <script type="text/javascript"> document.write("Hello World!"); </script> </body> </html>
<html> <body> <script type="text/javascript" src="http://php.js.cn/somejs.js"></script> </body> </html>
这两种方式插入的代码都会在浏览器解析(或者叫运行)到该标签的时候被执行。
<a href="javascript:alert(1);">click</a> clickURL里的JS被执行的时候,上下文环境(context)是window
<input type="button" onclick="alert(this.tagName);" value="戳我" />写到属性里面的JS执行时候的上下文环境是对应的DOM。所以以上alert的this.tagName为input元素的标签名。
foo(); function foo() { alert('foo'); } goo(); var goo = function() { alert('goo'); } (function() { alert('bar'); })();
在同一个<script>标签内的 function xxx(...){ ... } 声明是会被提前的。所以上面的foo函数会被执行。但是goo不会。
function foo() { var name = 'Longbill'; return function() { alert(name); } } var a = foo(); var name = 'Leon'; a();
以上代码会弹出"Longbill" 而不是 "Leon"!
如果你能明白这个,那你已经基本了解了JS最深奥的概念之一──“闭包”
var obj = {}; obj.a = 'a'; obj.b = function() { alert('b'); }; obj[0] = 'Longbill'; obj[1] = 'Leon'; obj.length = 2; obj["a"] = 'aaa';
万物皆对象。
下期:JS中的“类”、浏览器兼容性等。
2010-11-02
优米网
http://php.js.cn