JavaWeb之JavaScript一

作者:刘婧怡

时间:2019.03.07

主机环境:MacBookPro


 

JavaScript

1. JavaScript的简介

  • 基本概念:是基于对象和事件驱动的语言,主要应用于客户端

    ** 基于对象:提供了许多对象,可以直接使用

    ** 事件驱动:html做的网站是静态效果,JavaScript可以实现动态效果

    ** 客户端:专指浏览器

  • 特点:

    ** 交互性:信息的动态交互

    ** 安全性:js不能访问本地磁盘的文件

    ** 跨平台性:只要支持js的浏览器,就可以运行

  • JavaScript与Java的区别:没有任何关系!!

    ** JavaScript是基于对象,Java是面向对象的

    ** JavaScript是弱类型的语言,Java是强类型的语言。弱类型语言指数据类型可以被忽略的语言,强类型语言中,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了

    ** JavaScript只需解析就可以执行,Java需要先编译再执行

  • JavaScript的组成(三部分)

    ** ECMAScript:基本语法,语句等

    - ECMA:欧洲计算机协会,制定JavaScript的一些语法,语句等

    ** BOM:浏览器对象模型(browser object model),比如对地址栏、关闭按钮等相应对象的操作

    ** DOM:文档对象模型(document object model),对内容进行操作

 

2. JavaScript和html的结合方式(两种)

  • 第一种:使用标签,建议放在</body>后面

<script type="text/javascript">
    js代码
</script>
  • 第二种:使用script标签,引入一个外部的js文件,首先需要创建一个js文件

    html文件的代码如下:

<script type="text/javascript" src="js文件的路径">
</script>

注意:引入外部js文件后,在srcipt标签内写js代码(不会执行!!)

 

3. JavaScript的原始类型和声明变量

  • js的原始类型(五个),所有变量均使用关键字var

    ** String:字符串,var str = "abc";

    ** number:数字类型,var m = 123;

    ** boolean:布尔类型(true和false),var flag = true

    ** null:获取对象的引用,表示对象引用为空,所有对象的引用是object,如获取Date对象的空引用:var date = new Date();

    ** undefined:定义一个变量,但未赋值,var aa;

  • 利用typeof(变量名称);可以查看数据类型

  • undefined和null的区别

    ** undefined:变量定义了未初始化或访问对象不存在的属性

    ** null:访问对象不存在

 

4. JavaScript的语句

  • js的语句写法与Java很相似,++与—和java一样

  • if语句

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
    //if
    var a = 5;
    if(a == 5)
        alter(a);  //alter()函数用于弹出页面
    else
        alter(6);
</script>
</body>
</html>

  当前页面会弹出5

  • switch语句(所有类型都支持)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
  //switch
  var a = 5;
  switch(a){
      case 5:alert(5);
      break;
      case 6:alert(6);
      break;
      default:alert("other");
  }
</script>
</body>
</html>

  当前页面会弹出5

  • while循环

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
  //while
  var i = 5;
  while(i > 1){
      alert(i);
      i--;
  }
</script>
</body>
</html>
  • for循环

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
  //for
  for(var m = 5;m > 1;m--){
      alert(m);
  }
</script>
</body>
</html>

5. JavaScript运算符

  • 注意(其余大部分与java一样):

    ** js不区分正数和小数,123/1000=0.123

    ** 字符串的相加相减操作:相加为字符串连接,当数字相减是为运算减,若不是数字则提示NaN

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
  var str1 = "123";
  alert(str1+1); // 页面弹出1231 
  alert(str1-1); // 页面弹出122,若str1不是数字会提示NaN
</script>
</body>
</html>
  ** boolean的相加相减:true为1,false为0,加减为运算加减

   ** ==与===的区别:==比较的是值,===比较的是值和类型

  • 将内容显示在页面上:document.write(内容),内容也为html代码或变量固定值

    由于该内容需要使用双引号,若设置html中标签的属性需使用单引号

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
  document.write("aaaa");
  document.write("<hr/>");
  document.write("bbbb");
</script>
</body>
</html>
结果如下:

5. JavaScript的数组

  • 数组中类型可以不同,下标从0开始

  • 定义方式(三种),

    ** 第一种:var arr = [1,2,3]; var arr = [1,2,"3"];

    ** 第二种:使用内置对象Array

var arr = new Array(5); //定义一个长度为5的数组
arr[0] = "1";

   ** 第三种:使用内置对象Array

var arr = new Array(3,4,5); //定义一个内容为3,4,5的数组
  • 数组有属性length,可以得到数组的长度

var arr = [1,2,3];
alert(arr.length); //该页面弹出3

 

6. JavaScript的方法(函数)

  • 参数列表不需要写var,直接写变量名

  • 定义方式(三种)

    ** 第一种:使用关键字function

//创建方法
function 方法名(参数列表){
方法体;
返回值(可有可无);
}

//调用
方法名(参数列表); //无返回值
var 变量名 = 方法名(参数列表); //有返回值
  ** 第二种:匿名函数
//创建方法
var 名称 = function(参数列表){
方法体;
返回值(可有可无);
}

//调用
名称(参数列表);
  ** 第三种:使用js的内置对象Function(用得少)
//创建方法
var 名称 = new Function("参数列表","方法体和返回值"); //动态函数
//调用
名称(参数列表);

 

7. JavaScript的全局变量和局部变量

  • 全局变量:在script标签里定义一个变量,这个变量在页面中js部分都可以使用

    代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
    var aa = 10;
    document.write("在方法外部:" + aa);
    document.write("<br/>")

    function test(){
        document.write("在方法内部:" + aa);
        document.write("<br/>")
    }
    test();
</script>

<script type="text/javascript">
    document.write("在另一个script中:"+ aa);
    document.write("<br/>")
</script>
</body>
</html>
结果如下:

  • 局部变量:在方法内部定义一个变量,这个变量只能在方法内部使用

 

8. JavaScript的String对象

  • 创建String对象:var str = "123";

  • String的属性(常用):length表示字符串的长度

  • String的方法(常用)

    ** 与html相关的方法(设置数据样式)

    1. bold():加粗

    2. fontcolor():改变字体颜色

    3. fontsize():设置字体大小,范围为1-7

    4. link():将字符串显示为超链接,参数:地址

    5. sub() & sup():下标和上标

<!DOCTYPE html>
<htmllang="en">
<head>
   <metacharset="UTF-8">
   <title>Title</title>
</head>
<body>
<scripttype="text/javascript">
   //bold
   varstr1="abcd";
   document.write(str1.bold());
​
   document.write("<hr/>");
​
   //fontcolor
   varstr2="efgh";
   document.write(str2.fontcolor("red"));
​
   document.write("<hr/>");
​
   //fontsize
   varstr3="ijkl";
   document.write(str3.fontsize(4));
​
   document.write("<hr/>");
​
   //link
   varstr4="超链接";
   document.write(str4.link("乘法表-06.html"));
​
   document.write("<hr/>");
​
   //sup & sub
   varstr5="100";
   document.write(str5.sub() +"100"+str5.sup());
</script>
</body>
</html>
结果如下:
 

  ** 与java相似的方法

  1. concat():连接两个字符串
  1. charAt():返回指定位置的字符串,若位置不存在返回空字符串

  2. indexOf():检索字符串,若字符串不存在返回-1

  3. spilt():把字符串切分为字符串数组

  4. replace():替换字符串,两个参数,第一个参数为原始字符串,第二个参数为替换成的字符串

  5. substr() & substring():substr(n,m)是从第n位开始往后截取m位,substring(n,m)是从第n位开始截取到第m位(不包含第m位)

    代码如下:

<!DOCTYPE html>
<htmllang="en">
<head>
   <metacharset="UTF-8">
   <title>Title</title>
</head>
<body>
<scripttype="text/javascript">
   //concat
   varstr1="abc";
   varstr2="def";
   document.write(str1.concat(str2));
​
   document.write("<hr/>");
​
   //charAt
   varstr3="abcd";
   document.write(str3.charAt(0));
​
   document.write("<hr/>");
​
   //indexOf
   varstr4="efghlm";
   document.write(str4.indexOf("ef"));
​
   document.write("<hr/>");
​
   //split
   varstr5="a b c d";
   vararr1=str5.split(" ");
   document.write("length: "+arr1.length);
​
   document.write("<hr/>");
​
   //replace
   varstr6="abcedfgh";
   document.write(str6+"替换为");
   document.write(str6.replace("abc","def"));
​
   document.write("<hr/>");
​
   //substr & substring
   varstr7="abcdefgh";
   document.write("原始: "+str7);
   document.write("<br/>");
   document.write("substr(5,3): "+str7.substr(5,3));
   document.write("<br/>");
   document.write("substring(5,3): "+str7.substring(5,3));
</script>
</body>
</html>
结果如下:

 

9. JavaScript的Array对象

  • 创建数组(三种)

    ** var arr = [1,2,3];

    ** var arr = new Array(3); //数组有三个值

    ** var arr = new Array(1,2,3); //数组中的元素是1,2,3

    ** 创建空数组:var arr = []; var arr = new Array();

  • Array的属性(常用):length表示数组长度

  • Array的方法(常用)

    1. concat():连接两个数组

    2. join():根据指定字符分隔字符串

    3. push():向数组末尾添加元素,返回数组的新的长度,若参数为数组,则该数组相当于一个元素

    4. pop():删除最后一个元素,并返回该元素

    5. reverse():颠倒数组中元素的顺序

<!DOCTYPE html>
<htmllang="en">
<head>
   <metacharset="UTF-8">
   <title>Title</title>
</head>
<body>
<scripttype="text/javascript">
   //concat
   vararr1=[1,2,3];
   vararr2=[4,5,6];
   document.write("数组的连接:"+arr1.concat(arr2));
​
   document.write("<hr/>");
​
   //join
   vararr3=["a","b","c"];
   document.write("原始分隔用逗号:"+arr3);
   document.write("<br/>");
   document.write("现在改用短线分隔:"+arr3.join("-"))
​
   document.write("<hr/>");
​
   //push
   vararr4=[1,2,3];
   document.write("原始数组的长度:"+arr4.length);
   document.write("<br/>");
   document.write("原始数组: "+arr4);
   document.write("<br/>");
   document.write("增加新的元素后长度为:"+arr4.push([1,2])); //[1,2]这个数组为一个元素
   document.write("<br/>");
   document.write("新数组:"+arr4);
​
   document.write("<hr/>");
​
   //pop
   vararr5=[1,2,3,4,5];
   document.write("原始数组: "+arr5);
   document.write("<br/>");
   document.write("删除最后一个元素:"+arr5.pop());
   document.write("<br/>");
   document.write("新数组:"+arr5);
​
   document.write("<hr/>");
​
   //reverse
   vararr6=[1,2,3,4];
   document.write("原始数组:"+arr6);
   document.write("<br/>");
   document.write("颠倒后的数组:"+arr6.reverse());
</script>
</body>
</html>

结果如下:

 

10. Javascript的Date对象

  • 获取当前时间:var date = new Date(); 并利用toLocaleString()方法转换格式

  • getFullYear():得到当前年

  • getMonth():得到当前月,返回值范围为0-11,需要加一

  • getDay():得到当前星期,返回值范围为0-6,其中星期天用0表示

  • getDate():得到当前天,返回值范围为0-31

  • getHours():得到当前的小时

  • getMinutes():得到当前分钟

  • getSeconds():得到当前秒

  • getTime():返回1970年1月1日至今的毫秒数,使用毫秒数处理缓存的效果

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
    //获取当前时间
    var date = new Date();
    document.write(date);
    document.write("<br/>");
    document.write(date.toLocaleString());

    document.write("<hr/>");

    //getFullYear,得到当前年
    document.write("year: " + date.getFullYear());

    document.write("<hr/>");

    //getMonth,得到当前月
    document.write("month: " + (date.getMonth() + 1));

    document.write("<hr/>");

    //getDay,得到当前星期
    document.write("week: " + (date.getDay() + 1));

    document.write("<hr/>");

    //getDate,得到当前天
    document.write("day: " + date.getDate() );

    document.write("<hr/>");

    //getHours,得到当前小时
    document.write("hour: "+ date.getHours());

    document.write("<hr/>");

    //getMinutes,得到当前分钟
    document.write("minute: "+ date.getMinutes());

    document.write("<hr/>");

    //getSeconds,得到当前秒
    document.write("second: "+ date.getSeconds());

    document.write("<hr/>");

    //getTime,得到毫秒数
    document.write("毫秒数:" + date.getTime());
</script>
</body>
</html>

结果如下:

11. JavaScript的Math对象

  • Math对象:做一些数学运算,并且Math里都是静态方法,不需要new,直接使用Math.方法()

  • cell():向上舍入

  • floor():向下舍入

  • round():四舍五入

  • random():得到0-1直接的伪随机数

代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
  var m = 10.4;
  var n = 10.7;
  document.write("原始: " + m + " " + n);
  document.write("<hr>")
  //ceil
  document.write("ceil: " + Math.ceil(m) + " " + Math.ceil(n));
​
  document.write("<hr>");
​
  //floor
  document.write("floor: " +Math.floor(m) + " " + Math.floor(n));
​
  document.write("<hr>");
​
  //round
  document.write("round: " +Math.round(m) + " " + Math.round(n));
​
  document.write("<hr>");
​
  //random
  document.write(Math.random());
</script>
</body>
</html>
结果如下:

12. JavaScript的全局函数

  • 全局函数不属于任何一个对象,直接使用即可

  • eval():执行js代码

  • encodeURI():对字符进行编码

  • decodeURI():对字符进行解码

  • encodeURIComponent():对字符进行编码

  • decodeURIComponent():对字符进行解码

  • isNaN():检查字符串是否为数字,是数字返回false,不是数字返回true

  • parseInt():将字符串转换为number类型

代码:

<!DOCTYPE html>
<htmllang="en">
<head>
   <metacharset="UTF-8">
   <title>Title</title>
</head>
<body>
<scripttype="text/javascript">
   //eval
   varstr="document.write('123')";
   eval(str);
​
   document.write("<hr>");
​
   //encodeURI
   varstr1="测试中文aaaaa111";
   document.write(encodeURI(str1));
   document.write("<br>");
   //decodeURI
   document.write(decodeURI(str1));
​
   document.write("<hr>");
​
   //isNaN
   varstr2="123";
   document.write(isNaN(str2));
​
   document.write("<hr>");
​
   //parseInt
   varstr3="123";
   document.write(parseInt(str3) +1);
</script>
</body>
</html>
结果如下:

 

13. JavaScript的重载

  • js不存在重载,但可以通过其他方式模拟重载,将传递的参数保存到arguments数组中,利用arguments数组模拟重载

代码:

<!DOCTYPE html>
<htmllang="en">
<head>
   <metacharset="UTF-8">
   <title>Title</title>
</head>
<body>
<scripttype="text/javascript">
   functionadd() {
       varsum=0;
       for(vari=0;i< arguments.length;i++){
           sum+=arguments[i];
      }
       returnsum;
  }
​
   document.write(add(1,2));
   document.write("<br/>");
   document.write(add(1,2,3));
</script>
</body>
</html>
结果如下:
 

原文地址:https://www.cnblogs.com/jyliu/p/10485463.html