javascript学习笔记

Posted MiroKlose

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript学习笔记相关的知识,希望对你有一定的参考价值。

javascript学习笔记

是一门程序设计语言

基于对象和事件驱动语言(点击之类的),用于客户端,不同于jsp是用在服务端的。

特点:

1,交互性

2,安全性(不允许直接访问硬盘)

3,跨平台(只要能解释JS的浏览器就可以执行,和平台无关)

Javascript和Java之间的关系

Java和Javascript就像雷锋和雷峰塔的关系一样

1,Javascript基于对象,Java面向对象

2,Javascript解释执行,Java要先编译在执行。

3,Javascript弱类型,Java强类型。

 

Javascript和html结合方式

1,将javascript代码封装到<script>标签中

1 <script type="text/javascript">
2       alert("Hello Javascript");
3 </script>

 

2,将javascript代码封装到js文件中,并通过<script>标签中的src属性进行导入,在这个js文件中的函数,当前页面的其他函数都可以使用

注意:通过<script>中的src属性指定导入js之后,当前标签内部的js代码将不会执行,但是后续标签内部的代码不受影响。

1 <script type="text/javascript" src="demo.js"></script>//通常用来导入工具包

Javascript语法

1,关键字

2,标识符

3,注释

4,变量:标记一片内存空间

5,运算符

6,语句

7,函数

8,对象

 

变量

全局变量

在<script type="text/javascript"></script>标签中定义的变量,在该页面中都是有效的

<script type="text/javascript">  
  for(var x = 0 ;x<3;x++)
  {
    document.write("x="+x);
  }
  document.write("x="+x);//此时作为x仍然可以输出,是一个在该页面全局有效的全局变量

</script>

 

 局部变量是在函数内部定义的,只在函数中有效。

运算符

 1 <script type="text/javascript">
 2     //算术运算符
 3     var  x = 4235;//弱类型
 4     alert(x/1000*1000);//输出为4235,并不是4000
 5     alert("12"+1);//121
 6     alert("12"-1);//11
 7     alert(true+1);//2   js中false就是0或者null,非0非null就是true,默认用1表示。
 8     //逻辑运算符 && ||
 9     //位运算符 & | >><< >>>按位运算
10     var c = 6;
11     alert(c&3);//2
12     alert(5^3^3);//5 异或同一个数,等于本身
13     alert(c>>1);//3  右移1位 除以2的1次方
14     alert(c<<2);//24 左移2位 乘以2的平方
15     //三元运算符
16 </script>

一些细节:

a.undefined:未定义,就是一个常量

var x;//定义一个变量,但是不对其进行赋值的话,如果下面使用到该变量,就会出现undefined,说明x的值就是undefined,如果变量x未定义就直接使用的话,会报未定义错误
    //一个是值未定义,一个是变量未定义

 

b.获取变量类型:

1 <script type="text/javascript">
2     typeof("abc");//string 为什么是小写
3     typeof(9);//string
4     typeof(true);//boolean
5     typeof(2.5);//number
6     typeof(78);//number
7 </script>

语句

 1 <script type="text/javascript">
 2     //顺序结构
 3     //if语句
 4     var x = 3;
 5     if(4 == x)//这样写可以预防错误
 6     {
 7         alert("no");
 8     }else
 9     {
10         alert("yes")
11     }
12     //switch语句
13     var x = "abc";
14     switch(x)
    {
15 case "kk": 16 alert("a"); 17 break; 18 case "abc": 19 alert("b"); 20 break; 21 default: 22 alert("c"); 23 break;//可省略
    }
24 //循环结构 25 //while语句 26 var x = 3; 27 while(x<3){ 28 alert("x="+x); 29 //将数据直接写到当前页面中 如果输出的字符串是html标签,此时浏览器就可以进行解析 30 document.write("x="+x+"<br/>"); 31 x++; 32 } 33 //for语句 34 for(var x = 0;x<3;x++){ 35 document.write("x="+x); 36 } 37 //break:跳出选择结构,跳出循环结构 38 //continue:结束本次循环,执行下次循环 39 //带标号的循环。直接break w所表示的循环 40 w:for(var x = 0;x<3;x++){ 41 for(var y = 0;y<4;y++){ 42 document.write("x="+x); 43 break w;//跳出w表示的循环 continue w; 跳出w的当前循环,并进行下一次循环 44 } 45 } 46 47 </script>

数组

1,数组长度是可变的

2,数组的元素类型是任意的

建议在使用数组时使用同一类型的数据,操作方便

<script type="text/javascript">
      //定义方式1    
    var arr = [];
    var arr1 = [1,2,3,5];
    alert(typeof(arr));
    alert("len="+arr.length);
    //定义方式2
    var arr = new Array();//与第一种一样
    var arr1 = new Array(5);//定义数组长度为5
    var arr2 = new Array(4,5,6);//定义一个数组,元素是4,5,6
    //遍历
    for(var x = 0;x<arr.length;x++){
        document.write("arr[x]")
    }
</script>

函数

定义函数的格式

通过关键字来定义

function 函数名(参数列表){}

细节问题

1,只要使用了函数名称,就是对函数的调用

2,函数中有一个数组在对传入的参数进行存储,数组就是arguments,遍历该数组就可以拿到所有的传入参数

3,函数名就是函数对象的引用变量,如果直接把函数对象用字符串输出的话,那输出的结果就是函数的代码,如果把函数名赋值给另一个变量的话,那么就会有两个引用变量指向同一个函数对象。

 

 1 <script type="text/javascript">
 2     //定义一个函数
 3     function demo()
 4     {
 5         alert("demo run");
 6         return;
 7     }
 8     demo();//函数调用
 9     //定义加法
10     function add(x,y)
11     {
12         return x+y;
13     }
14     var sum = add(4,5);
15     alert("sum="+sum);
16     //相关细节问题
17     function show(x,y)
18     {
19         alert("len="+arguments.length)
20         alert("x="+x+"..y="+y);
21     }
22     show(4,5,6,7,8);//调用时,传入5个实参,而函数只有两个形参,所以只有前两个有作用,但是所有的参数都会传入到函数中,存放在arguments参数中
23 
24     function getSum()//函数名就是函数对象的引用变量,如果直接把函数对象用字符串输出的话,那输出的结果就是函数的代码
25     {        //如果把函数名赋值给另一个变量的话,那么就会有两个引用变量指向同一个函数对象
26         return 100;
27     }
28     var sum1 = getSum();
29     alert("sum1="+sum1);
30 function show1() 31 { 32 alert("show1 run..."); 33 } 34 alert(show1());//这个语句会先运行show1(),所以会先弹窗 show1 run... 然后再显示 show1 这个函数的运行结果 由于show1没有返回值,所以会再输出undefined 35 36 alert(show1);//show1 是一个引用变量,指向了show1函数对象,这个语句会将 show1的函数代码弹出 37 38 39 </script>

动态函数

使用较少

使用的是js中的一个内置对象Function

Function中的参数全是字符串,可以通过外部赋值来改变函数的形参列表和具体函数功能

1 <script type="text/javascript">
2     var add = new Function("x,y","var sum; sum = x+y; return sum;")
3     var he = add(4,8);
4     alert("he="+he);
5 </script>

匿名函数

函数的简写形式

<script type="text/javascript">
    var add3 = function()
    {
        return a+b;    
    }
    alert(add3(4,5));

</script>

 

 

对象

java中强调一类对象,js中强调某个对象(将js中的对象理解为java中的类?)

A,Object对象的方法

不同对象有不同的toString方法

a,数组的toString()方法是将数组输出,用逗号隔开

b,函数对象的toSting()方法是将函数代码输出

//Object对象方法
//toString方法
function show(){
  alert("show run...");
}
alert(show.toString());//alert(show)默认也是调用show的toString()方法来输出

var arr = [1,2,3,4];
arr.toString();

 

valueof()方法和toString()方法类似

B,String对象

var str1 = new String("abc");//在java中,String str = "abc";  js中所有数据类型都可以通过var来定义
var str2 = "abcd";
//string的length属性
document.write(str2.length);//字符串长度
//给字符串加上一些html标签的方法
document.write(str2.bold);//在字符串两端加上<B></B>,如果直接输出到html页面中,就会被解析为加粗
alert(str2.bold);//弹窗显示内容为<B>abcd</B>
document.write(str2.fontcolor("red"));//设置字体颜色
document.write(str2.link("http://www.baidu.com"));//将字符串设置为超链接  
document.write(str2.sub(1,3));//子串,1是头,3是长度
document.write(str2.substring(1,3))//子串,包含头,不包含尾 

 

 除了使用string自带的方法,还可以自定义字符串操作方法

a,自定义一个外部函数,用来去除字符串两端的空格

//自定义去除字符串两端空格的方法
function
mytrim(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); } var str = " abcde "; alert(trim(str));

b,将该函数定义为string对象的内部函数

使用字符串的原型来完成

原型就是该对象的一个描述,该描述中如果添加了一个新功能,那么该对象也会添加一个功能,类似于java中在类中添加了一个成员方法,该类对象也就有了一个该方法, 用prototype就可以获得该原型,通过prototype就可以对对象的功能进行扩展。

给string的原型添加一个属性,那么所有的字符串也就具备了这一属性,这个属性可以是成员变量,可以是成员函数

1,加成员变量

String.prototype.abc = 123;//给String的原型添加一个名为abc的成员变量,值为123,那么所有的字符串都会具有一个abc变量,可以直接调用输出

2,加成员函数

String.prototype.trim = mytrim;//给String的原型添加一个名为trim的成员函数,两个函数名不一定非要相同,mytrim就是一个已经定义好的函数

或者使用匿名函数的方式

String.prototype.trim = function(){

  //这样的话就没有形参列表了,这里用this来代替str
  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);
}

C,Array对象

var arr = ["abc","cba","nba","aaa","bbb"];
var arr1 = ["qqq","xiaomi",20];
var new Arr = arr.concat("mm",arr2);//在arr后面加上一个mm元素,arr2作为后续元素加上来
arr.join();//以指定分隔符来分隔数组,默认为逗号分隔
arr.pop();//移除最后一个元素,并返回剩下的数组
arr.push();//添加一个元素并返回新数组长度,如果添加的元素为一个数组,就会形成一个二维数组
arr.shift();//删除并返回第一个元素
arr.unshift();//指定数组插入到开始位置并返回该数组
arr.sort();//字符串怎么排序?字典顺序排序
arr.splice(1,3,12,43,67,"xixi","haha");//从1开始删,删三个,并把后面所有的都加进去


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

待续。。。。。


















以上是关于javascript学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

ReactJs学习笔记01

Javascript MVC 学习笔记 视图和模板

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

如鹏网学习笔记JavaScript

Javascript学习笔记:闭包题解