3.語句(與Java語句格式相同)
1.判斷結構(if語句)
注:var x = 3;
if(x==4)//可以進行比較運算。
if(x=4)//可以進行指派運算,而且可以同樣進行判斷。不報錯。
因為在Js中0或者null就是false,
非0或者非null就是true(通常用1表示)。
是以if(x=4)結果是true;
可以通過if(4==y)來解決該問題。因為4=y不會進行判斷,而是會報錯。
2.選擇結構(switch語句)
與java不同的是:因為弱類型,也可以對字元串進行選擇。
3.循環結構(while語句,do…while語句,for語句)。
注:不同的是,沒有了具體資料類型的限制,使用時要注意。
<span style="font-family:Times New Roman;font-size:14px;"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JS文法學習</title>
</head>
<body>
<script type="text/javascript">
//☆6.6 ?号表達式
var x=3;
document.write( x>2 ? "abc" : "nonono" );
document.write("<font color='red'> x="+ x +"</font>");
document.write("<hr/>");
//☆6.7 選擇語句
if(3==x){ //if(x=3){//if(x-3){//if(x==3){
document.write("yes");
}else{
document.write("no");
}
document.write("<br/>");
x=3; //if- else if - else 多選一的結構
if(x>0){
document.write("a");
}else if(x>1){
document.write("b");
}else if(x>2){
document.write("c");
}else{
document.write("d");
}
/*
var x="aac";
switch(x){
case "aa":
alert("11"); break;
case "bb":
alert("22"); break;
case "abc":
alert("33"); break;
default:
alert("other");
}
*/
</script>
<script type="text/javascript">
//☆6.8 循環結構
//while語句
var x=1;
var sum=0;
document.write("<br/><font color='red'>");
while(x<=10){
sum +=x;
document.write("x=" + x + "<br/>");
x++;
}
document.write("</font>");
document.write("sum="+sum);
//do-while語句
x=1;
do{
document.write("x=" + x + "<br/>");
x++;
}while(x<=10);
document.write("<hr/>");
//for循環
for(var x=1;x<=10;x++){
document.write("x=" + x + "<br/>");
}
a:for(var x=0; x<3; x++){
for(var y=0; y<4; y++){
document.write(x+","+y+" ");
break a;//continue;//break;
}
document.write("<br/>");
}
</script>
</body>
</html></span>
利用JS在網頁上輸出九九乘法表
<span style="font-family:Times New Roman;font-size:14px;"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用JS輸出9*9乘法表</title>
<style type="text/css">
table{
width=70%;
border: 1px solid blue;
border-collapse: collapse;
}
td{
border: 1px solid blue;
padding:5px;
}
</style>
</head>
<body>
<script type="text/javascript">
for(var x=1; x<=9; x++){
for(var y=1; y<=x; y++){
//3*4=12
document.write(x + "*" + y + "=" + x*y +" ");
}
document.write("<br/>");
}
document.write("<hr/>");
document.write("<table>");
for(var x=1; x<=9; x++){
document.write("<tr>");
for(var y=1; y<=x; y++){
//3*4=12
document.write("<td>"+x + "*" + y + "=" + x*y +"</td>");
}
document.write("</tr>");
}
document.write("</table>");
</script>
</body>
</html></span>
效果展示:
4.函數
1.一般函數
格式:
function 函數名(形式參數...)
{
執行語句;
return 傳回值;
}
函數是多條執行語句的封裝體,隻有被調用才會被運作。
注意:調用有參數的函數,但沒有給其傳值,函數一樣可以運作,或者調用沒有參數的函數,給其傳值,該函數也一樣運作。
說的簡單點:隻要寫了函數名後面跟了一對小括号,該函數就會運作。那麼傳遞的參數呢?
其實,在函數中有一個參數數組對象(arguments),該對象将傳遞的參數都封裝在一個數組中。
例:
function demo()//定義函數。
{
alert(arguments.length);
}
demo(“hello”,123,true);//調用函數。
那麼彈出的對話框結果是3,如果想得到所有的參數值,可以通過for循環周遊該數組。
for(var x=0; x<arguments.length; x++)
{
alert(arguments[x]);
}
為了增強閱讀性,最好按照規範,按定義好的形式參數傳遞實際參數。
函數在調用時的其他寫法:
var show = demo();//show變量接收demo函數的傳回值。
var show = demo;//這種寫法是可以的,意為show和demo代表同一個函數。
//那麼該函數也可以通過show()的方式運作。
動态函數
通過Js的内置對象Function實作。
例:var demo = new Function(“x,y”,”alert(x+y);”);
demo(4,6);
如同:
function demo(x,y)
{
alert(x+y);
}
demo(4,6);
不同的是,動态函數,參數以及函數體都可以通過參數進行傳遞,可以動态指定。
匿名函數
格式:function(){...}
例:var demo = function(){...}
demo();
通常在定義事件屬性的行為時較為常用。
例:
function test()
{
alert(“load ok”);
}
window.onload = test;
可以寫成匿名函數的形式:
window.onload = function()
{
alert(“load ok”);
}
匿名函數就是一種簡寫格式。
<span style="font-family:Times New Roman;font-size:14px;"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JS文法學習--函數</title>
<script type="text/javascript">
/*
function aaa(){
alert("頁面加載完畢!");
}
οnlοad=aaa;
*/
onload = function(){
alert("頁面加載完畢!");
};
</script>
</head>
<body>
<!--
函數定義格式:
function 函數名(形式參數...)
{
執行語句;
return 傳回值;
}
-->
<script type="text/javascript">
//※1 函數定義與調用
//空參、無傳回值
function hello(){
alert("hello funcion...");
}//定義
//hello();//調用
//hello();//調用
//有參數、有傳回值
function add(x, y){
return x+y;
}
var sum = add(12,23);
document.write( "sum="+ sum );
//1+2+...+n
function sum2( n ){
var s=0;
for(var i=1;i<=n;i++){
s +=i;
}
return s;
}
document.write( "sum2="+ sum2(10) );
</script>
<script type="text/javascript">
//※2 函數的一些細節1: js中的函數是沒有重載的,參數是按順序自動比對,并且參數是由函數内置的arguments數組來接收值的
function show(x,y){
alert(x+ ":" + y);
}
//show(1,2);// 1:2
//show(1);// 1:undefined
//show();//undefined:undefined
//show(1,2,3);// 1:2
//有關函數參數的内部原理: 函數内部通過“内置的arguments數組”來接收外面傳入的參數,如果函數聲明了參數,那麼會按順序依次把arguments中的元素賦給這些參數
document.write("<hr/>");
function aa(){
for(var i=0; i<arguments.length;i++){
document.write(arguments[i]+" ");
}
document.write("<br/>");
}
aa();
aa(1);
aa(1,3);
aa(1,3,5);
</script>
<script type="text/javascript">
//※2 函數的一些細節2: 函數在記憶體中的存儲形式:棧區中存入函數名(引用),所對應的function對象存放在堆記憶體中。 如果進行了引用指派,那麼多個引用都同樣指向該function對象
function fun(){
return 100;
}
var x = fun();
//alert("x:"+ x );
var y= fun; //函數引用fun和y捆綁,等價
//alert( y ); //alert( fun );
//alert("y:"+ y() );
</script>
動态函數功能:<input type="text" οnblur="ac();">
<script type="text/javascript">
//動态函數---思想,類似java中的類反射
var ssum = new Function("x,y", "var sum; sum=x+y; return sum;");
var s = ssum(100,200);
//alert("s="+ s);
/*
function ssum(x,y){
var sum; sum=x+y; return sum;
}
*/
function ac(){
var obj = document.getElementsByTagName("input")[0];
var text = obj.value;
//alert(text);
var dd = new Function("x,y", text);
var s = dd(10,20);
alert("s="+ s);
}
</script>
<script type="text/javascript">
//匿名函數
var xyz = function(a,b){
return a+b;
};
alert( xyz(12,21) );
function aa(){
alert("aaa...");
}
</script>
<input type="button" value="别點我" οnclick="aa();">
</body>
</html>
</span>
5.數組
友善操作多元素的容器,可以對其中的元素進行編号。
特點:可以存任意元素,長度是可變的。
格式:
var arr = new Array();
arr[0] = “hello”;
arr[1] = 123;
var arr = [‘hello’,123,true,”abc”];
通過周遊即可對數組進行基本操作。
for(var x=0; x<arr.length; x++)
{
alert(arr[x]);
}
<span style="font-family:Times New Roman;font-size:14px;"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JS文法學習--數組</title>
</head>
<body>
<script type="text/javascript">
//7 數組
//var ar[] = {1,3,5};//錯錯錯--這是java
var ar=[1,3,5,8]; //這裡不能用“var[] ar”的方式聲明數組,因為“[]”是代表數組類型,而js是弱類型,所有資料類型都是var
//alert( typeof(ar) );
//alert(ar.length); //4
for(var i=0;i<ar.length;i++){
document.write(ar[i]+" ");
}//1 3 5 8
document.write("<br/>");
ar[2] = 100;
for(var i=0;i<ar.length;i++){
document.write(ar[i]+" ");
} //1 3 100 8
document.write("<br/>");
ar[5] = 100;
for(var i=0;i<ar.length;i++){
document.write(ar[i]+" ");
} //1 3 100 8 undefined 100
//js數組知識點1: 長度可以是任意的
document.write("<br/>");
ar[1]=true;//"abc";
for(var i=0;i<ar.length;i++){
document.write(ar[i]+" ");
} //1 3 100 8 undefined 100
//js數組知識點2: 元素的資料類型也可以是任意的
//總之,js中沒有集合,數組就是集合----js中的數組 等于java中的數組+集合
</script>
<script type="text/javascript">
//使用Array對象定義數組
var ar2 = new Array();//相當于: var ars=[];
ar2[0]=2;
ar2[3]=20;
document.write("<br/>");
for(var i=0;i<ar2.length;i++){
document.write(ar2[i]+" ");
}//2 undefined undefined 20
var ar3 = new Array(4); //一個參數代表的是長度。本例是聲明初始長度為4的數組
document.write("<br/>");
for(var i=0;i<ar3.length;i++){
document.write(ar3[i]+" ");
}//
var ar4 = new Array(4,5,6);//如果參數個數大于1,則代表的是元素
document.write("<br/>");
for(var i=0;i<ar4.length;i++){
document.write(ar4[i]+" ");
}
</script>
<script type="text/javascript">
var arr=[];//聲明一個空數組, 注意不能聲明成:var arr;
//var arr;//要聲明成上面的方式,才是數組
arr[0] = 1;
arr[1] = 2;
//alert(arr);
//兩維數組
arr[0] = [1,3,5];//等價于: arr[0] = new Array(1,3,5);
arr[1] = [2,4,6,99];
//alert(arr[0]);//1,3,5
document.write("<hr/>");
for(var i=0;i<arr.length;i++){
for(var j=0; j<arr[i].length; j++){
document.write(arr[i][j]+" ");
}
document.write("<br/>");
}
</script>
</body>
</html></span>