首页 > 代码库 > javascript学习笔记

javascript学习笔记

Javascript和html结合
直接嵌入htm中
<script type="text/javascript">alert("hello world!");</script>
封装进js文件中,再引入
hello.js
alert("hello!");
<script type="text/javascript" src="http://www.mamicode.com/hello.js"/>

js变量(属于弱类型)
js中定义变量用关键字var ,非严谨,不用var也可以直接定义变量
 
算术运算符
alert("a=" + a/1000*1000);//a=3710
alert("12" + 1);//a=121
alert("12" - 1);//a=11
alert(true);//true
alert(true + 1);//2
alert(false + 1);//0
alert(false -1);//-1
alert(2%5==0);//false

其他运算符
var t=4;
alert(!t);//false
alert(3>0?alert("Yes"):alert("No"));//Yes->undefined
var xx;
alert(xx);//undefined
alert(xx==undefined);//true
alert(typeof("abc"));//string
alert(typeof(9));//number
alert(typeof(true));//boolean
alert(typeof(abc)==‘string‘);//true

语句
var x="abc";
switch(x){
     case "pk":
         alert("pk");
         break;
     case "abc":
         alert("abc");
         break;
     default:
         alert("ok");
         break;

}
document.write("abc");//直接输出到页面
九九乘法表格:
<script type="text/javascript">
document.write("<table>");
for(var x=1;x<=9;x++){
   document.write("<tr>");
   for(var y=1;y<=x;y++){
       document.write("<td>");
       document.write( y + "*" + x + "=" + y*x);
    document.write("</td>");
   }
   document.write("</tr>");
}
document.write("</table>");
</script>

数组
javascript中数组定义两种方式
var arr=[];var arr=[3,5,6];
使用Array对象来完成
var arr = new Array();//var arr=[];
var arr1 = new Array(5);//定义数组长度为5
var arr2 = new Array(5,6,7);//定义一个数组,元素为5,6,7
特点
长度是可变的,类型是任意的。

函数
function show(x,y){
   alert(x+":"+y);
}
show();//undefined:undefined
show(1,2);//1:2
show(1);//1:undefined
show(1,2,3,4);//函数中有一个数组对传入的参数进行存储,这个数组是arguments,所以arguments.length=4

function getSum(){
  return 100;}
var sum=getSum;//getSum本身是一个函数名,而函数本身在js中就是一个对象。getSum就是这个函数对象的引用,将getSum这个引用的地址赋值给sum。这时sum也就指向了这个函数对象。
alert(sum);//打印时候如果sum指向的是函数对象,那么会将该函数对象的字符串表现形式打印出来,就是该函数的代码定义格式。

动态函数
使用的是js中内置的一个Function对象
var add = new Function("x,y","var sum; sum=x+y;return sum;");
var he = add(4,8);
alert(he);//12

匿名函数
var xixi=function(){
  alert("hello");
}
等价于
function haha(){
  alert("hello");
}
var xixi=haha;
xixi();
十、练习
  <script type="text/javascript">
   
   var arr = [66,13,37,21,89,17];
   //取最值。
   function getMax(arr){
    var max = 0;
    for(var x=1; x<arr.length; x++){
     if(arr[x]>arr[max])
      max = x;
    }
    return arr[max];
    
   }
   
   var maxValue = http://www.mamicode.com/getMax(arr);
//   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;
   }
   function println(val){
    document.write(val+"<br/>");
   }
//   document.write("排序前:"+arr);
   println("排序前:"+arr)
//   sortArray(arr);
   println("排序后:"+arr)
//   document.write("排序后:"+arr);  
  </script>
  <script type="text/javascript">
   
   //查找。
   function searchElement(arr,key){
    
    for(var x=0;x<arr.length; x++){
     if(arr[x]==key)
      return x;
    }
    return -1;
   }
   
   //折半,必须有前提。必须是有序的数组。
   function binarySearch(arr,key){
    
    var max,min,mid;
    min = 0;
    max = arr.length-1;
    
    while(min<=max){
     mid = (max+min)>>1;
     
     if(key>arr[mid])
      min = mid + 1;
     else if(key<arr[mid])
      max = mid - 1;
     else
      return mid;
    }
    return -1;
    
   }
   
   //对数组的反转。
   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>

全局变量和局部变量,
在脚本片段中定义的变量,是全局变量。在函数中定义的变量是局部变量。
  <script type="text/javascript">
   var x = 3;//全局变量x.  
   function show(){//函数局部的变量x
    x = 8;
   }
   show();
   document.write("x="+x);//x=3;
  </script>
常用对象
String
   var str = "abcde";
   println("len="+str.length);
   println(str.bold());//加粗
   println(str.fontcolor("red"));//字体颜色。
   println(str.link("http://www.163.com"));//将字符串变成超链接。
   println(str.substr(1,3));//bcd
   println(str.substring(1,3));//bc
String自定义方法
   //去除字符串两端的空格。
   function trim(str){    
    var start,end;
    start=0;
    end=str.length-1;
    while(start<=end && str.charAt(start)==‘ ‘){
     start++;
    }
    while(start<=end && str.charAt(end)==" "){
     end--;
    }
    return str.substring(start,end+1); 
   }
原型
 
  (1)给string的原型中添加一个属性。
    String.prototype.myLen = 199;
    alert("abc".myLen );//199

  
  
  
  
  给string的原型中添加一个方法。

   * 字符串对象新功能,去除字符串两端的空格。
  String.prototype.trim = function(){  
   var start,end;
   start=0;
   end=this.length-1;
   while(start<=end && this.charAt(start)==‘ ‘){
    start++;
   }
   while(start<=end && this.charAt(end)==" "){
    end--;
   }
   return this.substring(start,end+1);
  }
  alert("-"+"     ab cd     ".trim()+"-");//-ab cd-
  
   * 字符串新功能,添加一个将字符串转成字符数组,返回一个数组
  String.prototype.toCharArray = function(){
   //定义一个数组。
   var chs = [];
   //将字符串中的每一位字符存储到字符数组中。
   for(var x=0; x<this.length; x++){
    chs[x] = this.charAt(x);
   }
   return chs; 
  }
  
   * 添加一个,将字符串进行反转的方法。
  String.prototype.reverse = function(){ 
   var arr = this.toCharArray();
   //将数组位置置换功能进行封装。并定义到了反转功能内部。
   for(var x=0,y=arr.length-1;  x<y ; x++,y--){
    swap(arr,x,y);
   }
   return arr.join("");//将字符数组转换为字符串
  }
  function swap(arr,a,b){
   var temp = arr[a];
   arr[a] = arr[b];
   arr[b] = temp;
  }
  
  
数组Array对象常用方法
function println(param){
 document.write(param+"<br/>");
}
   var arr = ["nba","haha","cba","aaa","abc"];
   var arr2 = ["qq","xiaoqiang",70];
   println(arr);
   println(arr2);
   var newArr = arr.concat("mm",arr2);//将mm作为新数组中的元素,将arr2数组中的元素也作为新数组中的元素。
   println(newArr);//nba,haha,cba,aaa,abc,mm,qq,xiaoqiang,70
  println(arr.join("-"));//nba-haha-cba-aaa-abc//join()默认是join(",")
          println(arr.pop());//abc//删除并返回最后一个元素。
          println(arr.shift());//nba//删除并返回第一个元素。
  println(arr2.reverse());//70,xiaoqiang,qq//逆置
       println(arr2.sort());//70,qq,xiaoqiang//排序
         
  var arr3 = ["nba","haha","cba","aaa","abc"];
  var temp = arr3.splice(1,3,8080,9527,"xixixi","wangcai");//删除元素并可以进行元素的替换。
       println(temp);//haha,cba,aaa
  println(arr3);//nba,8080,9527,xixixi,wangcai,abc
  println(arr3.unshift("uuuu"));//7//插入首部返回新数组的长度
  println(arr3);//uuuu,nba,8080,9527,xixixi,wangcai,abc
  
使用原型自定义数组Array对象的方法

Array.prototype.getMax = function(){
 var temp = 0;
 for(var x=1; x<this.length; x++){
  if(this[x]>this[temp]){
   temp = x;
  }
 }
 return this[temp];
}
 * 数组的字符串表现形式。
 * 定义toString方法。 相当于java中的复写。
Array.prototype.toString = function(){
 return "["+this.join(", ")+"]";
}

   var array = ["nba","haha","cba","aaa","abc"];
   var maxValue = http://www.mamicode.com/array.getMax();
   println("maxValue:"+maxValue);//maxValue:nba
   println(array.toString());//[nba, haha, cba, aaa, abc]

Date对象常用方法
1、获得当前时间 2012-10-17 16:19:32 星期三
function getCurrentTime(){
 var d=new Date();
 var month = add_zero(d.getMonth()+1);
 var days = add_zero(d.getDate());
 var hours = add_zero(d.getHours());
 var minutes = add_zero(d.getMinutes());
 var seconds = add_zero(d.getSeconds());
    var week = getWeek(d.getDay());
 var currentTime=d.getFullYear()+"-"+month+"-"+days+"  "
                  +hours+":"+minutes + ":"+seconds + "  "+week ;
 return currentTime;
}

function getWeek(num){
 var weeks = [‘星期日‘,‘星期一‘,‘星期二‘,‘星期三‘,‘星期四‘,‘星期五‘,‘星期六‘];
 return weeks[num];
}

function add_zero(temp)
{
 if(temp<10){ return "0"+temp;}
 else{ return temp;}
}

document.write(getCurrentTime());

2、日期对象和毫秒值之间的转换。
var date2 = new Date();//获取毫秒值。日期对象-->毫秒值。
var time = date2.getTime();
println(time);//1350462546374
//将毫秒值转成日期对象。方法:new Date(time);
var date3 = new Date(1230462546374);
document.write(date3);//Sun Dec 28 19:09:06 UTC+0800 2008

3、将日期对象和字符串之间进行转换。
//日期对象转成字符串。toLocaleString 日期和时间  toLocaleDateString 日期
//将字符串转成日期对象。具备指定格式的日期字符串-->毫秒值--->日期对象。
   var str_date = "9/28/2017";
   var time2 = Date.parse(str_date);
   var date3 = new Date(time2);
   println(date3.toLocaleDateString());//2017年9月28日

4、with()用法
       * 为了简化对象调用内容的书写。
    * 可以使用js中的特有语句with来完成。
    * 格式:
    * with(对象)
    * {
    *   在该区域中可以直接使用指定的对象的内容。不需要写“对象.”
    * }
   with(date){
    var year = getFullYear();
    var month = getMonth()+1;
    var day = getDate();
    var week = getWeek(getDay());
   }

Math对象
    * 演示Math对象。该对象的中的方法都是静态的。不需要new,直接Math调用即可。
    */
   var num1 = Math.ceil(-12.34);//返回大于等于指定参数的最小整数。//-12坐标轴往上
   var num2 = Math.floor(-12.34);//返回小于等于指定数据的最大整数//-13坐标轴往下
   var num3 = Math.round(-12.54);//四舍五入//-13
   
   var num4 = Math.pow(10,2);//100

javascript学习笔记