Hugenye的个人博客

网页三剑客之JavaScript

字数统计: 2.2k阅读时长: 9 min
2020/08/01 Share

js简介

js是什么

1
2
3
4
5
6
7
8
9
 js是可以嵌入到html中,是基于对象和事件驱动的脚本语言。

基于对象 js中会把所有的东西看成对象
事件驱动 js驱动 都是通过各种驱动
脚本语言 java需要jvm虚拟机进行编译 js不需要编译 直接可以使用。

特点: 1.有交互性
2.安全性 js 不能访问本地磁盘
3.跨平台 可以兼容不同的浏览器

js能做什么

1
2
1.js能动态操作(curd)html和css的代码
2.动态校验数据

js被引入的方式

内嵌脚本

1
2
<input  type="button" value="button"  
onclick="javascript:alert('xxxxxx')"/>

内部脚本

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

外部脚本

1
2
3
首先创建一个js文件,将js代码写到文件中,在html标签中添加 <script src="引入js即可">
ps:【js加载优化!】
可以放在任何位置,但是在不影响html功能前提下,越晚加载越好。

js基本语法

注解

1
2
3
单行使用//
多行注解 使用/*
*/

输出

1
2
3
console.log()		
document.write()
alert();

变量

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

变量必须以字母开头

变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)

变量名称对大小写敏感(y 和 Y 是不同的变量)

弱引用类型
1
2
3
4
5
6
7
8
9
  var  x = 5
var y = 'hello'
var b = true
声明多个变量
var x =6 ,x = 8;
//ps:重新声明JavaScript变量,该变量的值不会丢失
var age=24;
var age;
console.log(age)//24
原始数据类型

主要使用typeof 验证类型, typeof 数据、typeof(数据);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1.number 数字类型  Int float
2.string 字符串类型 "" ''没区别
3.boolean 布尔类型 true 1 false =0;
4.null 空类型 object
5.undefined 未定义类型 进行数据初始化
6.NAN parseInt(boolean)
/*注意:
1、类型转换:
number\boolean 转成string ——> 通过toString();
string\boolean 转成 整数 ——> parseInt();
——> parseFloat(); 转成字符串,只要遇到非字,要注意,不能转化在字符串中间的数据符串即停止转换
2、强制转换:
Boolean(); 强转成boolean
number非零即ture
string非空即ture

Number(); 强转成number
boolean ture 1 false 0
string 不能强转
*/
引用数据类型(创建对象) 自定义类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 // 1.java Object obj = new Object();
java var obj = new Object();
var obj = new Object();
obj.nam = "zhansan"
obj.age = 18;
obj.say = function(){
alert(this.nam+"说他已经"+this.age+"啦!");
}
obj.say();

//2. 方法中
var Person= function(){
var name = "李四";
var age = 11;
var say =new function(){
alert(name+age);
}
}
var p = new Person();
p.say();

//json形式
var pp = {name:"lisi",age:18,say:function(){
alert(this.name);
}
};
pp.say();

运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 1.赋值运算符 =
var i = 5;

2.算数运算符 +-*/%
"11"*"123" 可以出值
"11"*"11xx" 报错
+遇到字符串的时候就变成了连接符 其他都是把字符串转成整
数类型,进行处理 如果出现123xx xx不会自动转
1234/100*100

3.逻辑运算符
&& ||

4.比较运算符
< > <= >= != ==
===全等
1==“1” true
1==="1" false ===全等判断类型

5.三元运算符 >:?
x>y ? x-y:x+y
6.void运算符
<a href="javascript:void(0)"></a>

7.类型运算符
typeof 判断数据类型
instanceof 判断数据类型

逻辑语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1. if - else 
2. for for in
for/in 语句循环遍历对象的属性:
实例
var person={fname:"John",lname:"Doe",age:25};

for (x in person)
{
txt=txt + person[x];
}

for/变量数组
var arr = ["","","","",""];
3. switch

4. while

5.try/catch
function message()
{
try{
adddlert("Welcome guest!");
}catch(err){
txt="本页有一个错误。\n\n";
txt+="错误描述:" + err.message + "\n\n";
txt+="点击确定继续。\n\n";
alert(txt);
}
}

<input type="button" value="查看消息" onclick="message()" />

js内建对象

Number
1
2
3
4
5
6
1.创建方式
var number = new Number(var);
var number = Number(var);
方法:
toString() 转成字符串
valueOf() 转成number类型
Boolean
1
2
var boolean = new Boolean(var);
Boolean(var);
String
1
2
3
4
5
6
7
8
9
10
11
12
13
 创建方式:
var str = new String(s);
var str = String(s);
属性和方法:
length:字符串的长度
charAt():返回索引字符
charCodeAt:返回索引字符unicode
indexOf():返回字符的索引
lastIndexOf();逆向返回字符的索引
split();将字符串按照特殊字符切割成数组
substr():从起始索引号提取字符串中指定数目的字符
substring():提取字符串中两个指定的索引号之间的字符
toUpperCase();转大写
Array
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
创建方式:
new Array(); 创建一个空数组
new Array(size); 创建一个指定大小的数组 但是超出还可以加
new Array(element0, element0, ..., elementn); 创建一个数组 直接添加元素
var array = [1,2,3,4];
var array = [];创建一个空数组

方法:
lenght
join() 相当于 splite逆向
pop() 删除并返回最后一个元素
push() 向末尾放一个元素并返回长度
revserse()翻转数组
sort();

//--------------------Array-----------------------------
//var arr = [3,"z",1,"java",'js',true,4];
//alert(arr.length);//7
//alert(arr.join("-"));//3-7-1-java-js-true-4
//alert(arr.pop());//4
//alert(arr);//3,7,1,"java",'js',true
//alert(arr.push("R"));
//alert(arr);
//alert(arr.reverse());
//alert(arr.sort());//按照字符串字典顺序进行排序
Date
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
创建方式:
var myDate=new Date()
var myDate=new Date(毫秒值) 毫秒值代表1970到现在的时间
var Future = new Date(2017, 4, 1, 12, 00, 00);//年月日时分秒,月要减去1
属性和方法:
getFullYear() 获取年
getMonth()获取月 0-11
getDate() 获取日 1-31
getDay(); 星期 0-6
getTime() 返回 197011 日至今的毫秒数。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toString() 获取时间
toLocaleString() 获取本地时间

var date = new Date();
//alert(date.toString());
//alert(date.toLocaleString());
/* alert("year:"+date.getFullYear());//2015
alert("month:"+date.getMonth());//8
alert("date:"+date.getDate());//23
alert("day:"+date.getDay());//3 */
/* var time1 = date.getTime();
var time2 = 3*24*60*60*1000;
alert(new Date(time1+time2).toLocaleString()); */
Math

Math 对象并不像 Date 和 String 那样是对象的类,
因此没有构造函数 Math(),像 Math.sin() 这样的函数只是函数,
不是某个对象的方法。您无需创建它,
通过把 Math 作为对象使用就可以调用其所有属性和方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
属性:
Math.Pi
E 返回算术常量 e,即自然对数的底数(约等于2.718)。 1 3
LN2 返回 2 的自然对数(约等于0.693)。 1 3
LN10 返回 10 的自然对数(约等于2.302)。 1 3
LOG2E 返回以 2 为底的 e 的对数(约等于 1.414)。 1 3
LOG10E 返回以 10 为底的 e 的对数(约等于0.434)。 1 3
PI 返回圆周率(约等于3.14159)。 1 3
SQRT1_2 返回返回 2 的平方根的倒数(约等于 0.707)。 1 3
SQRT2 返回 2 的平方根(约等于 1.414)。 1 3

abs(x) 返回数的绝对值。 1 3
acos(x) 返回数的反余弦值。 1 3
asin(x) 返回数的反正弦值。 1 3
atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。 1 3
atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。 1 3
ceil(x) 对数进行上舍入。 1 3
cos(x) 返回数的余弦。 1 3
exp(x) 返回 e 的指数。 1 3
floor(x) 对数进行下舍入。 1 3
log(x) 返回数的自然对数(底为e)。 1 3
max(x,y) 返回 x 和 y 中的最高值。 1 3
min(x,y) 返回 x 和 y 中的最低值。 1 3
pow(x,y) 返回 x 的 y 次幂。 1 3
random() 返回 0 ~ 1 之间的随机数。 1 3
round(x) 把数四舍五入为最接近的整数。 1 3
sin(x) 返回数的正弦。 1 3
sqrt(x) 返回数的平方根。 1 3
tan(x) 返回角的正切。 1 3
toSource() 返回该对象的源代码。 1 - 3
valueOf() 返回 Math 对象的原始值。 1 4
RegExp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 创建方式 
new RegExp(pattern);
var reg = /^正则规则$/;

规则的写法:校验和约束字符串
[0-9] \d 代表数字
[A-Z] 大写字母
[a-z] 小写字母
[A-z] 是字母即可
\w 查找单词字符
\W 查找非单词字符
\s 空白字符
\S 非空白字符
n+ 至少出现一次
n* 出现0次或者多少
n? 出现0次获取1
{5}出现五次
{2-8} 出现2-8

属性方法:
校验邮箱
var reg = /^[A-z]+[A-z0-9_-]$/;

js的函数

js函数的定义方式

普通的方式
1
2
3
语法: function 函数名(参数列表){

}
匿名函数
1
2
3
var method = function(参数列表){}				  
(function(){ alert(arguments[0]);
}("aa"));
对象函数
1
2
3
4
语法 new Function(params...,函数体);
注意参数名称必须使用字符串形式,最后一个默认是函数体
var fn = new Function("a","b","alert(a+b);");
alert(fn(3,4));

函数的参数和返回值

1
2
3
4
1.形参没有返回值
2.形参和实参的个数不一定一样
3.arguments 内置对象
4.在定义函数的时候不必定义返回值直接通过return即可进行返回

给函数设置默认参数值

CATALOG
  1. 1. js简介
    1. 1.1. js是什么
    2. 1.2. js能做什么
    3. 1.3. js被引入的方式
      1. 1.3.1. 内嵌脚本
      2. 1.3.2. 内部脚本
      3. 1.3.3. 外部脚本
    4. 1.4. js基本语法
      1. 1.4.1. 注解
      2. 1.4.2. 输出
      3. 1.4.3. 变量
        1. 1.4.3.1. 弱引用类型
        2. 1.4.3.2. 原始数据类型
        3. 1.4.3.3. 引用数据类型(创建对象) 自定义类型
      4. 1.4.4. 运算符
      5. 1.4.5. 逻辑语句
    5. 1.5. js内建对象
      1. 1.5.0.1. Number
      2. 1.5.0.2. Boolean
      3. 1.5.0.3. String
      4. 1.5.0.4. Array
      5. 1.5.0.5. Date
      6. 1.5.0.6. Math
      7. 1.5.0.7. RegExp
  2. 1.6. js的函数
    1. 1.6.1. js函数的定义方式
      1. 1.6.1.1. 普通的方式
      2. 1.6.1.2. 匿名函数
      3. 1.6.1.3. 对象函数
    2. 1.6.2. 函数的参数和返回值