入门的js其实很简单,只需要明白下面的几点:
一、js基本概念和组成
1.定义
在一个页面中主要用于和用户的交互
2.特点
js是基于对象的脚本语言。所谓的基于对象的语言就是指该脚本语言中没有封装,继承,多态三个特性
3.组成:ECMAScript+DOM+BOM
①ECMAScript:主要负责操控变量,函数,对象
②DOM:主要指操控标签的方式
③BOM:主要负责控制浏览器的相关操作
4.注意事项
①运行环境:js的运行环境是在客户端,因为不需要服务器也能够相应用户的需求
②书写位置
2-1 在head内部:js内部就不能包含任何操作标签的代码
2-2 在body内部:以内js执行顺序是从上到下执行的,所以必须放置在body内容的最后面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="warp">变红</div>
<script>
warp.onclick=function(){
warp.style.color="red";
}
</script>
</body>
</html>
二、变量
1. 变量的定义:用来临时存放数据的容器
2. 声明变量: 关键字 var + 变量名
3. 变量名的命名规则
①组成:数字,字母,下划线,$。不能是关键字和保留字,并且区别大小写!
② 开头:不能以数字开头
③ 长度:不能超过255
4. 检测变量
① 检测变量类型:typeof(变量名)
② 检测工具:控制台--console
5.打印变量
① console.log(变量名) 。打印出来的是变量名的具体数值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>变量</title>
</head>
<body>
<script>
var first=123;
console.log(typeof(first));
console.log(first);
</script>
</body>
</html>
6.类型
① 单一数据类型
1-1 number:数值型,包括整型,浮点型...
<script>
var first=123;
console.log(typeof(first));
console.log(first);
</script>
1-2 string:字符串
1-2-1 声明: var 变量名='值'/"值"
1-2-2 注意
1.只要由引号包裹的都是字符串类型
2.引号自身不能嵌套自身。意思就是单引号可以嵌套双引号,双引号可以嵌套单引号,但是单引号不能嵌套单引号,双引号不能嵌套双引号
<script>
var str="world";
console.log(typeof(str));
console.log(str);
</script>
1-3 Boolean:布尔类型
Boolean类型值只有true、false两种
<script>
var str1=true;
console.log(typeof(str1));
console.log(str1);
</script>
1-4 undefined:未定义/未声明/未赋值
1-4-1 undefined 数据类型,打印具体的数值会报错,但是打印数据类型不会报错
1-4-2 未定义和未声明指的是变量没有用关键字var声明
<script>
console.log(typeof(a));
console.log(a);
</script>
1-5 null:空对象
<script>
a=null;
console.log(typeof(a));
console.log(a);
</script>
②复合数据类型
2-1 object:对象类型
2-1-1 定义:把事物的特征抽象出来
2-1-2 声明对象
var 对象名={
属性:"属性值",
属性:"属性值",
......
}
var stu={
name:"zh",
age:12,
sex:"nan",
}
2-1-3 获取对象中的值:对象名.属性名
console.log(stu.name);
2-1-4 注意事项
1.对象数据类型内部可以再有对象数据类型
2.对象由{}包裹,内部是属性和属性值或者是对象
3.属性和属性值用冒号分隔;属性和属性之间用逗号分隔。
4.一般最后面的属性,不加逗号
var stu={
name:"zh",
age:12,
sex:"nan",
score:{
math:19,
chinese:70
}
}
console.log(stu.score.math);
7.变量转换
① 获取变量的途径: prompt():可弹出输入框,获取的数值类型是字符串类型
② 显示变量的途径:alert():弹出框
var age=prompt('请输入年龄');
alert(age+1);
age=parseInt(age);
alert(age+1);
③ 转换类型
3-1 隐式转换
1. 数值+字符串=字符串
2. 数值+布尔类型=数值类型[true为1 flase为0]
3. 字符串+布尔类型=字符串
3-2 强制转换
1. parseInt:把以数字开头的值转换成整数类型。
1. 可以是纯数字,比如parsseInt(1234)
2. 可以是数字加字符串,比如paerseInt(123first)
3. 可以是以数字开头的小数parseInt(12321.445)
2. parseFloat:把以数字开头的值转换成浮点型
console.log(parseFloat(123.55))
// - * /强制转换
var m=1+2+'10'+2;
console.log('您输入的:'+m)
// 变量+常量
console.log(1+true)
console.log('1'+false)
三、运算符
1. + - * / %
该运算符比较简单,只需要注意一点:%取余 余数的正负号由被除数决定
console.log(10%3);
console.log(-10%3);
2.等号: = == ===
① =:作用的赋值
② ==:作用是比较,只要值相等,就说明两个数相等,返回true,否则返回false。一般用于if条件的比较
③ ===:作用也是比较,只有两个数的数值和数据类型相同时才相同,相同时返回true,否则返回false
④注意:复合数据类型不能进行简单的比较
console.log(1=='1');
console.log(1==='1');
3. ++a a++
①表达式:进行这个运算时,首先要明白表达式的含义,所谓的表达式是指有变量和运算符的式子。
② ++a: 先将a的值加1,加完之后再将a的值作为表达式的值
③a++: 先将a的值作为表达式的值,再将a的值加1
var a=10
console.log("a="+a++);
var b=10
console.log("b="+ ++b);
4.+= -= *= /=
m+=10; 等价于 m=m+10,其余以此类推
var b=10;
b+=10;
console.log("b+=10:"+b);
5.&& || !
**①&& **:并运算 只要有一个为假,结果就为假
**② || **:或运算 只要有一个为真,结果就为真
③!:取反操作
④注意
4-1 当操作数是纯数字时
1.&& 只要有一个为假,结果就为假,后面的比较就不再执行,否则一直执行。
2.|| 只要有一个为真,结果就为真,后面的比较就不再执行,当有一个为假时,一直往下执行,直到找到真为止
4-2 结果为假的情况:0 undifined null false
4-3 结果为真的情况:只要是字符串都为真['undefined' 为真]
var m=10;
console.log(m<0&&m>9)
console.log(m>0||m<10)
console.log(!(m>0||m<10))
console.log(1&&2&&3);
// 3
console.log(0&&2&&3);
// 0
console.log(1||2||3);
// 1
console.log(0||1||2);
四、数组
1. 定义数组: var 数组名=[元素,元素,元素,......]
var array=[1,2,'zhia',true,[1,6,9]]
在数组中,元素可以是任意的值,number类型,字符串类型,Boolean类型,甚至是数组。
另外,获取数组内的元素可以是:数组名[下标]
console.log(array[0]); //获取普通的数组元素
console.log(array[4][0]); //获取数组内元素是数组的方式
2. 数组常用的方法
① 获取长度:数组名.length
console.log(array.length);
② 添加元素
2-1 在头部添加:a.unshift('值')
2-2 在尾部添加:a.push('值')
2-3 在中间添加:a.splice(操作的位置,删除的元素个数,添加的值)
array.unshift('在头部添加的值')
console.log(array);
array.push('在尾部添加的值');
console.log(array);
array.splice(3,0,'在中间添加的值');
console.log(array);
③ 检测数组内的元素是否出现:数组名.indexOf(要检测的元素)
console.log(array.indexOf(true));
console.log(array.indexOf(12345));
//如果存在该源于就返回该元素所在的下标,如果不存在,返回-1
检测数组内的元素要注意以下两点:
第一点:检测的元素必须一模一样,也就是说检测的方法用的是三个等号的比较方法即indexOf是使用“===”比较两个数是否相等
第二点:对象是没有办法检测到的,因为对象和数组的存放地址不一样
④ 数组元素赋值:数组名.[下标]=值
array[array.length-1]=90
console.log(array);//如果下标存在,则是修改元素的值
array[90]=100;
console.log(array);
//如果下标不存在,则给相应下标的元素赋值,其余中间的值为空,并且同时拓展了数组的长度
⑤ 删除元素
5-1 在尾部删除:a.pop();
5-2 在头部删除:a.shift();
5-3 在中间删除:a.splice(操作的位置,删除的元素个数)
array.pop()
console.log(array);
array.shift();
console.log(array);
array.splice(3,1);
console.log(array);
⑥ 合并数组
6-1 合并两个数组 a.concat(b)
6-2 合并三个数组 a.concat(b,a)
var a=[1,2,3];
var b=[4,5,6];
var c=a.concat(b);
console.log(c);
var d=a.concat(a,c);
console.log(d);
⑦转换输出
7-1 转换成字符串输出 a.join();
7-2 转换成字符串 a.toString();
7-3 数组反向输出:a.reverse();
var e=a.join();
console.log(e);
var f=a.toString();
console.log(f);
a.reverse();
console.log(a);
⑧ 排序
8-1 按字母升序:a.sort()
8-2 按数字升序:a.sort(function(a,b){return a-b});
8-3 按数组降序:a.sort(function(a,b){return b-a});
var g=["f","w","a","v"];
console.log(g.sort());
var h=[3,6,1,4,5];
h.sort(function(a,b){return a-b});
console.log(h);
h.sort(function(a,b){return b-a});
console.log(h);
⑨ 注意事项
1.修改数组元素的最后一个值,可以用长度减1。
array[array.length-1]=90;
2. 数组属于不是js中的数据类型,但是是属于js中复合数据类型里面的object类型的
3. 数组的长度是下标加1。
array[100] =100