<!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>
<pre>
写一些具有如下功能的函数:
getMax(arr), sortArray(arr),
searchElement(arr,val), binarySearch(arr,val)
reverseArray(arr) 数组内容反转
</pre>

<script type="text/javascript">
/取最值/
function getMax(arr){
var max=0;
for(var i=1;i<arr.length;i++){
if(arr[i]>arr[max]){
max = i;
}
}
return arr[max];
}
//函数调用
var arr=[22,1,56,7,-4,8];
//alert("1111");
//注意js是大小写敏感的,跟Java一样。而html和css,以及以后学的sql语言都是大小写不敏感。
//var maxValue = getmax(arr); //WA: getmax未定义
var maxValue = getMax(arr); //WA: getmax未定义
alert("maxValue="+maxValue);

排序
function sortArray(arr){
for(var x=0;x<arr.length-1;x++){
for(var y=x+1; y<arr.length; y++){
if(arr[x]>arr[y]){
swap(arr,x,y);
}
}
}
}
function swap(arr,x,y){
var temp=arr[x];
arr[x]= arr[y];
arr[y]= temp;
}
document.write("排序前:"+arr+"<br/>");
sortArray(arr);
document.write("排序后:"+arr+"<br/>");

///print函数//
function print(x){
document.write(x);
}
function println(x){
document.write(x+"<br/>");
}

/元素查找
function searchElement(arr,val){
for(var x=0; x<arr.length; x++){
if(arr[x]==val){
return x; //返回val在数组中的位置
}
}
return -1;
}
//document.write("7在数组中的位置:"+searchElement(arr, 7) );
//document.write("0在数组中的位置:"+searchElement(arr, 0) );
println( "7在数组中的位置:"+searchElement(arr, 7) );
println( "0在数组中的位置:"+searchElement(arr, 0) );

///二分查找///
function binarySearch(arr,key){
var right,left,mid;
left=0;
right=arr.length-1;
while(left<=right){ //bug: 必须要有"="号
mid = (left+right)>>1;
if(key>arr[mid]){//右半区
left=mid+1;
}else if(key<arr[mid]){//左半区
right=mid-1;
}else{//找到了
return mid;
}
}
return -1;//未找到
}
println( binarySearch(arr, 1) );

//数组内容反转//
arr=[2,3,4,9,7,100,6,-1,0,-3,7];
println("反转前:"+arr);
function reverseArray(arr){
for(var start=0,end=arr.length-1; start<end ; start++,end--){
swap(arr,start,end);
}
}
reverseArray(arr);//调用
println("反转后:"+arr);

</script>

</body>
</html>

 

<!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">
//只有在函数中定义的变量才是局部变量,其它的是全局变量
for ( var x = 0; x < 10; x++) {//这里的x是全局变量,和Java是不一样
document.write("x=" + x + "<br/>");
}

</script>

<hr/>

<script type="text/javascript">
document.write("x=="+x+"<br/>"); //能够访问到上一脚本片段中的全局变量x
</script>


<script type="text/javascript">
function aa(){
var y = 10;
}
//这里无法访问aa()内部定义的局部变量,所以此处y是没有声明的变量,无法读取。
//document.write("y=="+y+"<br/>"); //语法错误

function bb(){
/*自己声明了局部变量x, 把外面的屏蔽掉了
---在函数内部的x都是自己局部声明的这个。
但是如果出了函数,原来的全局变量又有效了。
这里的变量x只是碰巧和外部的同名,内部对x的操作和外面没关系,
而且一出了函数,外部变量x又会显现出来。
*/
var x=20;
//x=20; //没有重新声明x,则这个x就是外部变量
}
bb();
document.write("xx=="+x+"<br/>");
</script>


<script type="text/javascript">

</script>
</body>
</html>
<!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">
//只有在函数中定义的变量才是局部变量,其它的是全局变量
for ( var x = 0; x < 10; x++) {//这里的x是全局变量,和Java是不一样
document.write("x=" + x + "<br/>");
}

</script>

<hr/>

<script type="text/javascript">
document.write("x=="+x+"<br/>"); //能够访问到上一脚本片段中的全局变量x
</script>


<script type="text/javascript">
function aa(){
var y = 10;
}
//这里无法访问aa()内部定义的局部变量,所以此处y是没有声明的变量,无法读取。
//document.write("y=="+y+"<br/>"); //语法错误

function bb(){
/*自己声明了局部变量x, 把外面的屏蔽掉了
---在函数内部的x都是自己局部声明的这个。
但是如果出了函数,原来的全局变量又有效了。
这里的变量x只是碰巧和外部的同名,内部对x的操作和外面没关系,
而且一出了函数,外部变量x又会显现出来。
*/
var x=20;
//x=20; //没有重新声明x,则这个x就是外部变量
}
bb();
document.write("xx=="+x+"<br/>");
</script>


<script type="text/javascript">

</script>
</body>
</html>

 

JS中的对象:
        String
        Array
        Boolean
        Date
        Math
        Number
        RegExp
        Global

Object对象是其它JS对象的根

<!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" src="tools.js"></script>
</head>
<body>
<pre>
JS中的对象:
String
Array
Boolean
Date
Math
Number
RegExp
Global
</pre>

<script type="text/javascript">
//Object对象是其它JS对象的根
var obj = new Object();
obj.name = "jack";
obj.age = 20;
obj.ajewj = 100;
//alert(obj.name+","+obj.age+","+obj.ajewj);
</script>

<script type="text/javascript">
function aa() {
alert("abc123....");
}
println(aa);
println(aa.toString()); //和上一句等价,调用Object中的toString()函数

var arr1 = [ -3, 0, 8, -6, 88, 5, 12 ];
println(arr1);
println(arr1.toString()); //和上一句等价,调用Object中的toString()函数
</script>

<script type="text/javascript">
/String对象
//1 创建
var str1 = "abc123";
var str2 = "okok123";
var str2 = 'okok123';
var str3 = new String("hello world cup!");

//2 成员
//2.1 属性
println("len:" + str3.length); //注意,这里的length是属性,而java中的方法

println(str3.charAt(6));
var s = str3.replace("world", "asia"); //跟java一样,replace()不是原地修改
println(str3); //没变
var s = str3.replace("world", "asia");
println(s); //变了

s = "aa,bb,88,abc,66,3.14,ww";
var ar = s.split(","); //坑: 这里不能用 var ar[] = ....
println(ar.length);//7
for ( var i = 0; i < ar.length; i++) {
print(ar[i] + " ");
}
println("");

//截子串
//substr(start,length);
//substring(start,stop);

s = str3.toUpperCase(); //和Java一样,是非原地修改
println(str3 + "," + s);

//println( str3.valueOf() );
//println( str3.toSource() ); //演示失败

var str1 = "Hello ";
var str2 = "world!";
document.write(str1.concat(str2));

//2.2.2 方法(第二类方法:进行网页功能处理的,这些类似于html中的标签封装)
println(str3.big().bold());
println(str3.fontcolor("red"));
//alert( str3.big().bold() ); //<b><big>hello world cup!</big></b>
//alert( str3.fontcolor("red") );

println(str3.link("http://www.baidu.com"));
</script>
</body>
</html>

 

tool.js

function print(str){
document.write(str);
}

function println(str){
document.write(str+"<br/>");
}