文章出处:
JavaScript Note http://irw.ncut.edu.tw/peterju/jscript.html
简介:
JavaScript是一个object-based(以物件(对象)为基础)的Script Language(脚本语言),与Java之间并没有什么直接联系。
JavaScript随着网页下载到电脑中,并经过浏览器上的runtime engine 直译后,然后跟HTML程式混在一起,做出特效来。
JavaScript是区分大小【大小写敏感】写的(case sensitive),HTML则否【大小写不敏感】(case insensitive), event handlers【事件处理器】在HTML中可不区分大小写,但在JavaScript区段中必须完全使用小写。(event handler 正式是全部用小写, 例如 onclick、onchange、onmouseover, 若在 HTML使用, 例如在 <form> 或 <body> 內, 可不理会大小写, 但若在 <script> 內, 就一定全部要用小寫。衔接:http://www.takka.com.hk/jstutor/ch11/ch11.htm)
JavaScript既然是object-based的script language,其所指的object有三大类。
JavaScript 一般用来与网页上的表单互动,因此了解DOM就变得十分的重要,其object指的是浏览器的物件(对象),像是document,image, form,button,textarea…等,这些物件(对象)各有属性(property)与方法(method),物件间也有其阶层框架(hierarchy),了解这些后才能彻底灵活运用JavaScript。
浏览器的支持差异:
JavaScript在不同的浏览器上的表现都有差异,一般而言,IE对于错误的程式的容忍度高,Mozilla则为严谨。(IE可不指定document),而mozilla则否。IE:forms.text.value Mozilla:document.forms.text.value;
JavaScript区段宣告
(1)JavaScript的程式码(程序)包在指定的宣告中;
(2)JavaScript code 独立成一个.js的档案。
(3)可使用分號或enter將多行的程式碼斷行,但要寫在一行時,則一定要使用分號,同時注意程式碼可以斷行,但參數不可斷行喔(不懂,能否指点一二,谢谢)。
宣告语法:
<script type = "text/javascript" >
<!-- script -->
</script>
<!--嵌入宣告 -->
<script type= "text/javascript" src = "*.js"> <!-- *.js :外部的.js文档url -->
<script>
<!-- 宣告不支持JavaScript的语法-->
<noscript>本网页使用了JavaScript,请点击文字版本观看内容 </noscript>
JavaScript的执行方式
(1)网页直接执行:JavaScript的程式码(程序)置于任何区段,要配合宣告。
<!-- JavaScript的程式码(程序)置于Head区段显示文字 -->
<html>
<head>
<script type = "text/javascript">
document.write('Hello World');
</script>
</head>
</html>
<!-- JavaScript 的程式码(程序)置于body区段显示html -->
<html>
<head>
</head>
<body>
<script type = "text/javascript">
document.write('<h1>Hello world</h1>');
</script>
</body>
</html>
(2)事件驱动执行:配合body区段的事件(event),JavaScript的程式码(程序)可置于
1. 事件的参数中(少量的代码),无需宣告。
2.Head区段或body区段中,要配合宣告,建议放在head区段中。
<!-- 配合事件驱动,JavaScript的程式码(程序)置Head区段 -->
<html>
<head>
<script type = "text/javascript">
function message() {
alert("Hello world");
}
</script>
</head>
<body onload = "message()">
</body>
</html>
<!-- 配合事件驱动,少量的JavaScript直接放在事件的参数中。-->
<html>
<head>
</head>
<body>
<input name = "s" type = "button" onclick = 'document.bgColor = "red"' value = '红色' />
</body>
</html>
资料形态(Data Type) 【数据类型】
JavaScript无法明确地宣告数据类型。在很多情况下,JavaScript会在需要的时候自动执行转换。
原生资料形态(Primitive Date Type) 【基本数据类型】
字串(String) 字串值是一串由0个或0个以上的Unicode字元(字母,小数点和标点符号)结合而成。双括号可以包含在单括号的字串里, 而单括号也可以包含在双括号里。
<script type = "text/javascript">
var a = "hello world";
var b = 'hello world';
var c = "hello'world'";
var d = 'hello"world"';
document.write("a: " + a + " , b" + b + ", c: " + c + ", d: " + d);
</script>
数字(number)JavaScript中的整形和浮点值并无明显区分(JavaScript内部把所有的数字表示为浮点值)。
NaN:用不正确的资料,像字符或未定义的值执行数学运算时。
Positive Infinity:正无穷大。
Negative Infinity: 负无穷大
Positive and Negative : 正零和负零(JavaScript区分)
布林(boolean)【布尔值】 true和false
特殊资料形态
null和undefined最大的不同时,null就好比零,而undefined好比特殊值NaN(非数值)
null值和undefined值经比较后一律相等。
null
null是一个包含null的变量,就是“无值”或“无物件(对象)”。null关键字不能拿来作为一个函数或变量的名称。
JavaScript的null资料形态只有一个值:null。
undefined
要检验一个变量是否存在,可以检测这个变量是否为undefined
<script type = "text/javascript">
var test = 1;
if (typeof(test) == "undefined") {
document.write("test undefined");
}
if (typeof(_test) == "undefined") {
document.write("test_ undefined");
}
</script>
组合(引用)数据类型
对象(object) 数组中的元素可存放各种数据类型;
数组的下标除了数字外,也可以存在文字,这种数组称为开放式数组;
数组就是对象,对象就是数组。
<script type = "text/javascript">
var a = "abc"; //双引号的字串
var b = 'def'; //单引号的字串
var c = 123; //数字
var d = [123, "abc", a, b]; //使用了中括号定义阵列(数组),阵列中可存放各种数据类型
var e = new Array(123, "abc", a , c); //使用了Array构造式定义阵列(数组),阵列中可存放各种数据类型
var f = {"peter":123, "john":456, "jane":789}; //使用了大括号定义了一个开放性阵列(数组)
var g = new Object(); //定义一个物件(对象)
g.peter= 123; //利用【物件属性】给值
g.john = 456;
g["jane"] = 789; //利用数组的方式给值
alert(f["peter"]);
alert(f.john); //对矩阵以【物件属性】的方式给值
alert(g["peter"]); //对物件以【矩阵】的方式给值
alert(g.jane);
</script>
函数(function) JavaScript可将函数当成变量来传递。
基本类型转换:
JavaScript的语言类型并不严谨,不需要非常明确地宣告变量的类型。
自动转化原则
强制转化
1. 将字符串强制改为数值:eval(“字串”);eval将字符串改为对象(数组)。
<script type = "text/javascript">
eval("x = 10; y = 20; document.write(x * y)"); //使用之一
var f = '{"peter":123, "john":456, "jane":789}'; //使用了大括号定义了一个开放性阵列(数组) 并表示为字串
eval("var type =" + f); //使用之二
alert(type.peter);
</script>
2. 将字符串强制转换为指定底数的数值:parseInt(“字串”,[底数]);
3. 将字符串强迫转换为浮点数:parseFloat(“字串”);
变数(Variable)【变量】
宣告【声明】
类型:
局部变量 var 变量名
全局变量 变量名
var test; //局部变量;
test_; //全局变量
方式:
<script type = "text/javascript">
var name; //单一变量声明
var name, sex, age; //多变量声明
var name = "iokays", flag = true; //声明并赋予初值,否则其值为undefined
</script>
虽然数据类型不同,但是声明的方式一样。
命名(identifier)
提供作为命名变量,命名函数,提供语法的格式。
1.区分大小写
var x, X; //声明了x, X 2个变量
2.第一个字元必须是ASCII字母(大小写皆可)、底线(_)字元,注意数字不能拿来当做第一个字元。后面的字元必须是字母,数字,或底线。
var _x; var x_1;
3.复合字的第一个字建议大写。
4.变量名不能为保留字(关键字)。
函数(function)
(一)3种表现形式
1.一般的函数定义方式;
2.使用函数文字;
3.使用了Function()构造式。
(二)以<a>…</a>标签连接至javascript的函数有2种方式。
文字浏览器不可用(假连接)
<a href = 'javascript:show_url("argument")' >连接至JavaScript函数</a>
文字浏览器可用
<a href = ### onclick = 'show_url("argument");return false;'>连接JavaScript</a>