Python开发【前端】:JavaScript

JavaScript入门

  JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
  在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为NetscapeSun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与SelfScheme较为接近。
  为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript
 

简单了解下:

<body>
<input type="text" id="user" />
<input type="button" onclick="GETDATA();" value="点我"/>
<script>
function GETDATA() {
var i = document.getElementById('user');
alert(i.value);
}
</script>
</body>

在input框里输入用户名后,点击点我后浏览器窗口弹出刚刚输入的用户名

Python开发【前端】:JavaScript

两种引用方式:

<head>
<meta charset="UTF-8">
<title>Title</title>
<!--第一种方式引用js文件-->
<script src="commons.js"></script>
<!--第二种方式直接写在html中-->
<script>
alert('James')
</script>
</head>

字符串记得要加引号

JavaScript常用数据类型

1、变量

JavaScript中变量的声明是一个非常容易出错的点,局部变量必须一个 var 开头,如果未使用var,则默认表示声明的是全局变量

<script type="text/javascript">

    // 全局变量
name = 'James'; function func(){
// 局部变量
var age = 18; // 全局变量
gender = "男"
}
</script>

2、数字

JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。

转换:

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

特殊值:

  • NaN,非数字。可使用 isNaN(num) 来判断。
  • Infinity,无穷大。可使用 isFinite(num) 来判断
    <script>
   //字符串转换为数字
age="18";
i = parseInt(age);
</script>

更多数值计算

常量

Math.E
常量e,自然对数的底数。 Math.LN10
10的自然对数。 Math.LN2
2的自然对数。 Math.LOG10E
以10为底的e的对数。 Math.LOG2E
以2为底的e的对数。 Math.PI
常量figs/U03C0.gif。 Math.SQRT1_2
2的平方根除以1。 Math.SQRT2
2的平方根。 静态函数 Math.abs( )
计算绝对值。 Math.acos( )
计算反余弦值。 Math.asin( )
计算反正弦值。 Math.atan( )
计算反正切值。 Math.atan2( )
计算从X轴到一个点的角度。 Math.ceil( )
对一个数上舍入。 Math.cos( )
计算余弦值。 Math.exp( )
计算e的指数。 Math.floor( )
对一个数下舍人。 Math.log( )
计算自然对数。 Math.max( )
返回两个数中较大的一个。 Math.min( )
返回两个数中较小的一个。 Math.pow( )
计算xy。 Math.random( )
计算一个随机数。 Math.round( )
舍入为最接近的整数。 Math.sin( )
计算正弦值。 Math.sqrt( )
计算平方根。 Math.tan( )
计算正切值。 Math

Math

3、字符串

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

① charAt (输入索引位置获取字符)

>a = 'James'
<"James"
>a.charAt(1)
<"a"
>a.charAt(2)
<"m"
>a.charAt(3)
<"e"

② substring (输入起始位置,结束位置获取字符)

>a = 'James'
<"James"
>a.substring(0,2)
<"Ja"
>a.substring(2,5)
<"mes"

③ lenght (获取当前字符串长度)

>a = 'James'
<"James"
>a.length
<5

④ concat (字符串拼接)

>a = 'James';
<"James"
>a.concat('eric');
<"Jameseric"

⑤ indexOf(子序列位置)

>a = 'James';
<"James"
>a.indexOf('me');
<2
>a.indexOf('es');
<3

⑥ split (分割字符)

>a = 'JamesaJames';
<"JamesaJames"
>a.split('a');
<["J", "mes", "J", "mes"]
>a.split('a',1);
<["J"]
>a.split('a',3);
<["J", "mes", "J"]

更多:

obj.length                           长度

obj.trim()                           移除空白
obj.trimLeft()
obj.trimRight)
obj.charAt(n) 返回字符串中的第n个字符
obj.concat(value, ...) 拼接
obj.indexOf(substring,start) 子序列位置
obj.lastIndexOf(substring,start) 子序列位置
obj.substring(from, to) 根据索引获取子序列
obj.slice(start, end) 切片
obj.toLowerCase() 大写
obj.toUpperCase() 小写
obj.split(delimiter, limit) 分割
obj.search(regexp) 从头开始匹配,返回匹配成功的第一个位置(g无效)
obj.match(regexp) 全局搜索,如果正则中有g表示找到全部,否则只找到第一个。
obj.replace(regexp, replacement) 替换,正则中有g则替换所有,否则只替换第一个匹配项,
$数字:匹配的第n个组内容;
$&:当前匹配的内容;
$`:位于匹配子串左侧的文本;
$':位于匹配子串右侧的文本
$$:直接量$符号

more

4、布尔值

布尔类型仅包含真假,与Python不同的是其首字母小写。

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

5、数组

① 创建数组

li = [11,22,33,44]
[11, 22, 33, 44]

② split插入、删除或替换数组的元素

>li = [11,22,33,44]
<[11, 22, 33, 44]
>li.splice(1,0,99);
<[]
>li
<[11, 99, 22, 33, 44]
>li.splice(1,1,888);
<[99]
>li
<[11, 888, 22, 33, 44]
>li.splice(1,1)
<[888]
>li
<[11, 22, 33, 44]

③ slice 切片

>li = [11,22,33,44]
<[11, 22, 33, 44]
>li.slice(1,3)
<[22, 33]

其他常用功能:

obj.length          数组的大小

obj.push(ele)       尾部追加元素
obj.pop() 尾部获取一个元素
obj.unshift(ele) 头部插入元素
obj.shift() 头部移除元素
obj.splice(start, deleteCount, value, ...) 插入、删除或替换数组的元素
obj.splice(n,0,val) 指定位置插入元素
obj.splice(n,1,val) 指定位置替换元素
obj.splice(n,1) 指定位置删除元素
obj.slice( ) 切片
obj.reverse( ) 反转
obj.join(sep) 将数组元素连接起来以构建一个字符串
obj.concat(val,..) 连接数组
obj.sort( ) 对数组元素进行排序

6、字典 

创建字典

>dic = {'k1':'v1','k2':'v2'};
<Object {k1: "v1", k2: "v2"}

JavaScript语句和异常

1、循环

JavaScript中支持两个中循环语句,分别是:for 和 while

① 第一种方式: for循环,循环时,循环的元素是索引

循环数组

>   a = [11,22,33,44]
for(var item in a){
console.log(a[item])
}
11
22
33
44

循环字典

>   a = {'k1':'v1','k2':'v2'}
for(var item in a){
console.log(a[item])
}
v1
v2

② 第二种循环: for循环,循环条件判断

for (var i=0;i<10;i++){
//循环十次
}

结合数组循环

a = [11,22,33,44]
for(var i=0;i<a.length;i=i+1){
console.log(a[i])
}
11
22
33
44

③ 第三种循环: while循环,循环条件判断

while(条件){
// break;
// continue;
}

2、条件语句

JavaScript中支持两个中条件语句,分别是:if 和 switch

① if条件语句

if(条件){

    }else if(条件){

    }else if(条件){

    }else{

    }

② switch条件语句

switch(name){
case '1':
age = 123;
break;
case '2':
age = 456;
break;
default :
age = 777;
} switch语句

③ ==、===、!=、!== 四者的关系

1 == "1";
true
1 === "1";
false
1 != "1";
false
1 !== "1";
true

==只匹配数值、===不止匹配数值还匹配类型

④ &&and 与 ||或

and
if (1==1 || 2==2)

if (1==1 && 2==2)

JavaScript函数

1、基本函数

JavaScript中函数基本上可以分为一下三类:

// 普通函数
function func(arg){
return true;
} // 匿名函数
var func = function(arg){
return "tony";
} // 自执行函数
(function(arg){
console.log(arg);
})('123')

JavaScript正则表达

1、定义正则表达式  

  • /.../  用于定义正则表达式
  • /.../g 表示全局匹配
  • /.../i 表示不区分大小写
  • /.../m 表示多行匹配

2、test(判断字符串是否符合规定的正则)

rep = /\d+/;
rep.test("dfsfsfdsf423dsddd");
# true rep = /^\d+$/;
rep.test("dfsfsfdsf423dsddd");
# false

3、exec(获取匹配的数据)

默认只取第一个
rep = /\d+/;
str = "wangshen_67_houyanfa_20"
rep.exec(str)
# ["67"]
rep.exec(str)
# ["67"] 分组匹配、对匹配到的字符串进行二次匹配
var text = "JavaScript is more fun than Java or JavaBeans!";
var pattern = /Java\w*/;
pattern.exec(text);
# ["JavaScript"]
var pattern = /Java(\w*)/;
pattern.exec(text);
# ["JavaScript", "Script"] 全局匹配、对字符串一个一个的进行匹配直到全部匹配完成返回none,然后再次匹配时重新开始
var text = "JavaScript is more fun than Java or JavaBeans!";
var pattern = /Java(\w*)/g;
pattern.exec(text);
# ["JavaScript", "Script"]
pattern.exec(text);
# ["Java", ""]
pattern.exec(text);
# ["JavaBeans", "Beans"]
pattern.exec(text);
# null
pattern.exec(text);
# ["JavaScript", "Script"]

4、多行匹配

默认情况下就是多行匹配
text = "JavaScript is more fun than \n Java or JavaBeans!";
# "JavaScript is more fun than
Java or JavaBeans!"
pattern = /Java\w*/g;
pattern.exec(text);
# ["JavaScript"]
pattern.exec(text);
# ["Java"]
pattern.exec(text);
# ["JavaBeans"] 当出现^ $符匹配时只能匹配一行
text = "JavaScript is more fun than \nJava or JavaBeans!";
# "JavaScript is more fun than
Java or JavaBeans!"
pattern = /^Java\w*/g;
pattern.exec(text);
# ["JavaScript"]
pattern.exec(text);
# null 当出现^ $符匹配时还想匹配多行
text = "JavaScript is more fun than \nJava or JavaBeans!";
# "JavaScript is more fun than
Java or JavaBeans!"
pattern.exec(text);
# ["JavaScript", "Script"]
pattern.exec(text);
# ["Java", ""]
pattern.exec(text);
# null

JavaScript其他知识

1、定时器

<script>
//定义函数
function func() {
console.log(1); //console端打印数据
}
//创建一个定时器
setInterval("f1();",5000); //5000表示5秒 单位毫秒
</script>

setInterval(“执行函数”,“时间”)表示创建一个定时器;console.log(“数据”)在console打印输入的数据

2、跑马灯(滚动字符)

<body>
<div id="i1">欢迎习大大莅临指导</div>
<script>
function func() {
//根据ID获取指定标签的内容,定于局部变量
var tag = document.getElementById('i1');
//获取标签内部的内容
var content = tag.innerText;
var f = content.charAt(0);
var l = content.substring(1,content.length);
var new_content = l + f;
tag.innerText = new_content;
}
setInterval('func()',500);
</script>
</body>

最终效果“欢迎习大大莅临指导”字符滚动显示,结合了字符串处理和定时器

Python开发【前端】:HTML--》》http://www.cnblogs.com/lianzhilei/p/6038646.html

Python开发【前端】:CSS--》》http://www.cnblogs.com/lianzhilei/p/6046131.html

Python开发【前端】:DOM--》》http://www.cnblogs.com/lianzhilei/p/6072367.html

上一篇:老刘 Yii2 源码学习笔记之 Module 类


下一篇:yii2源码学习笔记(十一)