本文介绍了JavaScript的基本(常用)语法,供大家参考。
先说一下Javascript该怎么写。两种形式,一种是直接把JavaScript写在HTML页面里,另一种是存在*.js文件里然后在页面内引用。
直接写时,即可以放在<head> </head>内,也可以放在<body> </body>内。一般函数是放在<head>区的,具体的执行代码是在<body>区里的。例如,在body里写:
<body> <script> document.writeln("haha <br/> "); </script> </body>
<script type="text/javascript" src="js_css/menutree.js"></script>写成*.js时,就不要再用<script> </script>了。
JavaScript是从上到下依次执行/解析的。在调用一个function或时,必须保证该function已经被解析/声明了。这也是一般要把function定义放在<head>内的原因。
所有的function与变量只在本页面内有效,当离开页面后,新的页面内无法访问上一页内声明的变量或函数。如果一定要访问的话,可以用Cookie也存一下,到下一页再读出来。
变量定义就以var开头即可,就可以定义了一个变量了。放在函数体内的就认为局部变量,外面的就是全局变量。需要指出的是,JavaScript的语法是很乱的,变量也有别的定义方法。但是希望大家不要使用其他乱七八糟的语法,就使用这种最常见的语法就可以,足够用,而且省脑筋。
关于变量大家需要明白
(1) 变量是弱类型的,一个整数甚至可以与字符串直接相加,得到一个字符串
(2) 所谓全局变量,也只是在当前页面内有效,当页面被unload跳到另一个页面时,所有的变量都被销毁了。这些全局变量跟流览器(也称为User Agent)内嵌变量有区别,每个页面都自动有window, document这些内嵌对象。
(3) 不区分单引号还是双引号
<script> // 变量定义 var nNumOfBytes = 10; var fPercent = 0.32; var strYourName = ‘Mr.Known’; var pRect = new Object(); </script>
<script> function goToUrl(strUrl) { location.href = strUrl; } </script>函数可以在HTML事件/ FORM / JavaScript 中被调用,如:
HTML元素事件回调:
<body onload="goToUrl('http://www.baidu.com')" >
FORM元素事件回调
<select name="somelist" onchange="onSomeThingChanged()">
超链接目标
<a href="javascript:goToUrl('www.baidu.com')" > go </a>
直接在JavaScript中调用
<script>
goToUrl(”www.baidu.com");
</script>
一般的JavaScript是不需要使自定义类的,就是说一般不会到达这么复杂的程度。因为是脚本语言嘛,随便写几句就好。一是难调试,二是不便阅读。但是如果一定要写什么复杂的功能,如菜单树之类的,那么就得写一点类来完成了。
同样,类在JavaScript里也是有2种定义格式的,我们会下面的格式就好了,另一种格式很烂,还是不要知道为好。
先来个不带构造参数的:
<script> function SampleClass() { // 变量变量定义 this.nId = 10; // 成员函数定义 this.plusId = function (nPlus) { return this.nId + nPlus; } } </script>
function MenuItem(l, h, t) { this.label = l; this.href = h; this.target = t; this.toHtml = function() { var html = "<a href='" + this.href + "' "; if(this.target != null) html += (" target='" + this.target + "' "); html += " >" + this.label + "</a>"; return html; } }
关于类,注意以下几点:
(1) 不要从头写一个类,请从我这里copy过去再改,这样就不会有那些莫名其妙的麻烦了
(2) 在成员函数里引用成员变量,一定要加this.,不然引用不到
(3) 成员函数如果想返回值,就用return,想return什么类型都不必事先声明,直接return就好
(4) 对于学习C++和Java的程序员来说,要明白var p = new SomeClass();这句中的new其实就是创建一个对象并返回其指针
(5) 考虑使用Object类
JavaScript语法很乱的,脚本语言嘛,要求不要太高。虽然可以自定义类,但大数多情况下都不需要自己声明一个类,可以直接使用Object类来定义一个结构,而无需事先声明这个结构的形式。
如:
function createObject() { var obj = new Object(); obj.x = 10; obj.y = 11; return obj; }
看到没,这个函数随意的创建了一个object,为其添加成员 x, y,并没有通知任何人(无prototype声明)。而使用者也是直接就可以调用其 o.x , o.y,无需要猜测。
<script> var o = createObject(); document.writeln("x=" + o.x + ", y=" + o.y); </script>
var o = createObject(); if(o.x != null && o.y != null) { document.writeln("x=" + o.x + ", y=" + o.y); }
<script> // 创建 var a = new Array(); // 遍例 for(var i=0; i<a.length; i++) { var e = a[i]; } // 添加 var item = new MenuItem("000"); this.itemArray.push(item); </script>
数组作为成员变量
function Menu() { this.itemArray = new Array(); this.addItem = function(l, h, t) { var item = new MenuItem(l,h,t); this.itemArray.push(item); }; }