首页 > 技术文章 > python第15天

python-nameless 2016-08-16 00:44 原文

   

  Python之Web前段:

       一. JavaScript

 

一. JavaScript 

 

  1. 什么是JavaScript ?

     JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理。

 

  2. JavaScript的编写:

      <1. js代码存在形式:

      方式一:引入js文件:

1 <script type="text/javascript" src="js文件"></script>

      方式二:直接编辑js代码

1  <script type="text/javascript">
2         js代码内容
3  </script>

    <2. js代码放置位置:

      (1) 放置于HTML文件的<head></head>之间

          由于HTML文件是由浏览器从上到下依次载入的,这样可以确保首先载入js代码。

          如果js代码响应延迟,用户长时间看不到页面,大大影响了用户的体验。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <script type="text/javascript">
 7         js代码内容
 8     </script>
 9 </head>
10 <body>
11 
12 </body>
13 </html>   

     (2) 放置于HTML文件的<body></body>底部

         当js代码放置于<body>底部时,就算js代码响应延迟,用户也能看到网页,只是js效果稍慢一些,对于用户体验的影响不会很大。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <script src="https://www.gstatic.com/og/_/js/k=og.og2.en_US.iF4jnkQuaf0.O/rt=j/t=zcms/m=def/exm=in,fot/d=1/ed=1/rs=AA2YrTv5-POC4Ks9GtGRdY2ywUWisqz7-Q"></script>
 7 <script>
 8     alert(js代码内容);
 9 </script>
10 </head>
11 <body>
12 
13 </body>
14 </html>

  <3. js代码中的注释:

     和其他语言一样用来提供代码的可读性,js注释也分为两种:单行注释和多行注释。

     (1) 单行注释:

        以//开头

1 <script src="https://www.gstatic.com/og/_/js/k=og.og2.en_US.iF4jnkQuaf0.O/rt=j/t=zcms/m=def/exm=in,fot/d=1/ed=1/rs=AA2YrTv5-POC4Ks9GtGRdY2ywUWisqz7-Q">
2 //        src指定js代码的源链接
3 </script>
4 <script>
5 //        alert输出js代码内容
6 alert(js代码内容);
7 </script>

    (2) 多行注释:

       以 /* 开始,以 */ 结尾。

1 <script src="https://www.gstatic.com/og/_/js/k=og.og2.en_US.iF4jnkQuaf0.O/rt=j/t=zcms/m=def/exm=in,fot/d=1/ed=1/rs=AA2YrTv5-POC4Ks9GtGRdY2ywUWisqz7-Q">
2         /*
3         src指定js代码的源链接
4         alert输出js代码内容
5         */
6 </script>
7  <script>
8     alert(js代码内容);
9  </script>

  3. JavaScript变量

   与代数一样,JavaScript 变量可用于存放值(比如 x=2)和表达式(比如 z=x+y)。

   变量可以使用短名称(比如 x 和 y),也可以使用描述性更好的名称(比如 age, sum, totalvolume)。

    • 变量必须以字母开头
    • 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)
    • 变量名称对大小写敏感(y 和 Y 是不同的变量)

     js变量分为局部变量与全局变量:

     1. 局部变量:

       只能在本变量声明的函数内部调用。

    2. 全局变量:

       整个代码中都可以调用的变量。

注: JavaScript 语句和 JavaScript 变量都对大小写敏感。

 1 <script>
 2     var a =1;
 3     function test(){   
 4         alert(window.a);  //a为1,这里的a是全局变量
 5         var a=2;     //局部变量a在这行定义
 6         alert(a);  //a为2,这里的a是局部变量
 7     }
 8     test();
 9     alert(a); //a为1,这里并不在function scope内,a的值为全局变量的值
10 </script>

注: JavaScript 语句和 JavaScript 变量都对大小写敏感。

4. 数据类型        

 JavaScript 中的数据类型分为原始类型和对象类型:

  • 原始类型
    • 数字
    • 字符串
    • 布尔值
  • 对象类型
    • 数组
    • “字典”
    • ...

特别的,数字、布尔值、null、undefined、字符串是不可变。

null、undefined

  null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。
  undefined是一个特殊值,表示变量未定义。
 1 <!DOCTYPE html>
 2 <html>
 3 <body>
 4 
 5 <script>
 6 var person;
 7 var car="Volvo";
 8 document.write(person + "<br />");
 9 document.write(car + "<br />");
10 var car=null
11 document.write(car + "<br />");
12 //输出:
13 //    undefined
14 //    Volvo
15 //    null
16 </script>
17 
18 </body>
19 </html>

  (1). 数字

     Javascript只有一种数字类型,不区分整数和浮点数。

var x1=34.00;      //使用小数点来写
var x2=34;         //不使用小数点来写    

    转换:

    • parseInt(..)    将某值转换成数字,不成功则NaN
    • parseFloat(..) 将某值转换成浮点数,不成功则NaN

    特殊值:

    • NaN,非数字。可使用 isNaN(num) 来判断。
    • Infinity,无穷大。可使用 isFinite(num) 来判断。
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6 </head>
 7 <body>
 8     <script>
 9        var a = 123.345;
10         a1 = parseInt(a);
11        document.write(a1 + "<br />");
12         var b = 123;
13         b1 = parseFloat(b);
14         document.write(b1 + "<br />");
15         var c=123e5;
16        document.write(c + "<br />");
17         var d=123e-5;
18        document.write(d + "<br />");
19 //       由于js不区分整数和浮点数,这里测试其实没有什么意思,输出都为整数;极大或者极小的数可以使用科学记数法。
20 
21 //        输出:
22 //            123
23 //            123
24 //            12300000
25 //            0.00123
26     </script>
27 
28 </body>
29 </html>
 1 常量
 2 
 3 Math.E
 4 常量e,自然对数的底数。
 5 
 6 Math.LN10
 7 10的自然对数。
 8 
 9 Math.LN2
10 2的自然对数。
11 
12 Math.LOG10E
13 以10为底的e的对数。
14 
15 Math.LOG2E
16 以2为底的e的对数。
17 
18 Math.PI
19 常量figs/U03C0.gif。
20 
21 Math.SQRT1_2
22 2的平方根除以1。
23 
24 Math.SQRT2
25 2的平方根。
26 
27 静态函数
28 
29 Math.abs( )
30 计算绝对值。
31 
32 Math.acos( )
33 计算反余弦值。
34 
35 Math.asin( )
36 计算反正弦值。
37 
38 Math.atan( )
39 计算反正切值。
40 
41 Math.atan2( )
42 计算从X轴到一个点的角度。
43 
44 Math.ceil( )
45 对一个数上舍入。
46 
47 Math.cos( )
48 计算余弦值。
49 
50 Math.exp( )
51 计算e的指数。
52 
53 Math.floor( )
54 对一个数下舍人。
55 
56 Math.log( )
57 计算自然对数。
58 
59 Math.max( )
60 返回两个数中较大的一个。
61 
62 Math.min( )
63 返回两个数中较小的一个。
64 
65 Math.pow( )
66 计算xy。
67 
68 Math.random( )
69 计算一个随机数。
70 
71 Math.round( )
72 舍入为最接近的整数。
73 
74 Math.sin( )
75 计算正弦值。
76 
77 Math.sqrt( )
78 计算平方根。
79 
80 Math.tan( )
81 计算正切值。
82 
83 Math
更多的数值计算

   (2) 字符串 

     字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。

     可使用单引号与双引号:

1 var answer="Nice to meet you!";
2 var answer="He is called 'Bill'";
3 var answer='He is called "Bill"';
 1 obj.length                           长度
 2  
 3 obj.trim()                           移除空白
 4 obj.trimLeft()
 5 obj.trimRight)
 6 obj.charAt(n)                        返回字符串中的第n个字符
 7 obj.concat(value, ...)               拼接
 8 obj.indexOf(substring,start)         子序列位置
 9 obj.lastIndexOf(substring,start)     子序列位置
10 obj.substring(from, to)              根据索引获取子序列
11 obj.slice(start, end)                切片
12 obj.toLowerCase()                    大写
13 obj.toUpperCase()                    小写
14 obj.split(delimiter, limit)          分割
15 obj.search(regexp)                   从头开始匹配,返回匹配成功的第一个位置(g无效)
16 obj.match(regexp)                    全局搜索,如果正则中有g表示找到全部,否则只找到第一个。
17 obj.replace(regexp, replacement)     替换,正则中有g则替换所有,否则只替换第一个匹配项,
18                                      $数字:匹配的第n个组内容;
19                                      $&:当前匹配的内容;
20                                      $`:位于匹配子串左侧的文本;
21                                      $':位于匹配子串右侧的文本
22                                      $$:直接量$符号
常用功能

  (3) 布尔值

     布尔(逻辑)只能有两个值:true 或 false,其首字母小写。

1 var a = True
2 var b = False

    js中为False的6个值:

      0, '', null, undefined, NaN 和 false

    对象的布尔值为True,即使为对象{}。

    不同对象之间对比返回False,只有引用相同对象才会返回True,如

  • ==      比较值相等
  • !=       不等于
  • ===   比较值和类型相等
  • !===  不等于
  • ||        或
  • &&      且

  (4) 数组

    数组下标是基于零的,所以第一个项目是 [0],第二个是 [1],以此类推。和python的列表类似。

 1 <!DOCTYPE html>
 2 <html>
 3 <body>
 4 
 5 <script>
 6 var i;
 7 var shop = new Array();
 8 shop[0] = "maozi";
 9 shop[1] = "yifu";
10 shop[2] = "xiezi";
11 
12 for (i=0;i<shop.length;i++)
13 {
14 document.write(shop[i] + "<br>");
15 }
16 
17 //输出:
18 //maozi
19 //yifu
20 //xiezi
21 
22 </script>
23 
24 </body>
25 </html>
 1 obj.length          数组的大小
 2  
 3 obj.push(ele)       尾部追加元素
 4 obj.pop()           尾部获取一个元素
 5 obj.unshift(ele)    头部插入元素
 6 obj.shift()         头部移除元素
 7 obj.splice(start, deleteCount, value, ...)  插入、删除或替换数组的元素
 8                     obj.splice(n,0,val) 指定位置插入元素
 9                     obj.splice(n,1,val) 指定位置替换元素
10                     obj.splice(n,1)     指定位置删除元素
11 obj.slice( )        切片
12 obj.reverse( )      反转
13 obj.join(sep)       将数组元素连接起来以构建一个字符串
14 obj.concat(val,..)  连接数组
15 obj.sort( )         对数组元素进行排序
常用功能

  (5) 对象

    在 JavaScript 中,对象是数据(变量),拥有属性和方法。

    申明一个变量即为创建一个新的对象

1 var a = "HelloWord";

    JavaScript拥有属性和方法:

  属性:

1 a.length=5

  方法:

1 a.replace()
2 
3 a.search()
 1 <!DOCTYPE html>
 2 <html>
 3 <body>
 4 
 5 <script>
 6 person=new Object();  //创建一个person对象
 7 person.firstname="laowang"; //以下为person的四个属性
 8 person.lastname="gebi";
 9 person.age=40;
10 person.eyecolor="yellow";
11 document.write(person.firstname + " is " + person.age + " years old.");
12 //输出:
13 //laowang is 40 years old.
14 
15 </script>
16 
17 </body>
18 </html>

   

5. 正则表达式:

  (1) 定义正则表达式

    • /.../  用于定义正则表达式
    • /.../g 表示全局匹配
    • /.../i 表示不区分大小写
    • /.../m 表示多行匹配
      JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容)
1 var pattern = /^Java\w*/gm;
2 var text = "JavaScript is more fun than \nJavaEE or JavaBeans!";
3 result = pattern.exec(text)
4 result = pattern.exec(text)
5 result = pattern.exec(text)

注:定义正则表达式也可以  reg= new RegExp()

  (2) 匹配

    JavaScript中支持正则表达式,其主要提供了两个功能:

    • test(string)     检查字符串中是否和正则匹配
1 n = 'uui99sdf'
2 reg = /\d+/
3 reg.test(n)  ---> true
4  
5 # 只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前后加 ^和$
    • exec(string)    获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
 1 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
 2  
 3 非全局模式
 4     获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)
 5     var pattern = /\bJava\w*\b/;
 6     var text = "JavaScript is more fun than Java or JavaBeans!";
 7     result = pattern.exec(text)
 8  
 9     var pattern = /\b(Java)\w*\b/;
10     var text = "JavaScript is more fun than Java or JavaBeans!";
11     result = pattern.exec(text)
12  
13 全局模式
14     需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕
15     var pattern = /\bJava\w*\b/g;
16     var text = "JavaScript is more fun than Java or JavaBeans!";
17     result = pattern.exec(text)
18  
19     var pattern = /\b(Java)\w*\b/g;
20     var text = "JavaScript is more fun than Java or JavaBeans!";
21     result = pattern.exec(text)

  (3) 字符串中相关方法     

1 obj.search(regexp)                   获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效)
2 obj.match(regexp)                    获取匹配内容,搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部
3 obj.replace(regexp, replacement)     替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项,
4                                         $数字:匹配的第n个组内容;
5                                           $&:当前匹配的内容;
6                                           $`:位于匹配子串左侧的文本;
7                                           $':位于匹配子串右侧的文本
8                                           $$:直接量$符号

 

推荐阅读