JavaScript基础知识
1.JavaScript的介绍
JavaSript 的定义和作用:
JavaSript是运行在浏览器的脚本语言,是由浏览器解释器执行的,简称js,它能够让网页和用户有交互功能,增加良好的用户体验效果。
前端开发三大块:
1.html:负责网页结构
2.CSS:负责网页样式
3.JavaScript:负责网页行为
2.JavaScript的使用方式
1.行内式(主要用于事件)
2.内嵌式
3.外链式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- 内嵌式 -->
<script>
alert("2.内嵌式")
</script>
<!-- 外链式 -->
<script src="./main.js"></script>
</head>
<body>
<!-- 行内式 -->
<input type="button" value="按钮" onclick="alert('1.行内式')">
</body>
</html>
3.变量定义和数据类型
JavaScript是一种弱类型语言,也就是说不需要指定变量的类型;
JavaScript的变量类型由它的值来决定,定义变量需要关键字"var",一条JavaScript语句应该以“;”结尾;
弱类型语言:JavaScript
data = 10 整型
data = “xlz” 字符串
强类型语言:C,java
int data = 10
str data = “xlz”
语法格式:var 变量名 = 值;
JavaScript 注释:
JavaScript的注释分为单行注释(//注释内容)和多行注释(/多行注释/)
数据类型:(五种基本类型,一种复合类型)
5种基本数据类型:
1、number 数字类型
2、string 字符串类型
3、boolean 布尔类型 true 或 false
4、undefined undefined类型,变量声明未初始化,它的值就是undefined
5、null null类型,表示空对象,如果定义的变量将来准备保存对象,可以将变量初始化为null,在页面上获取不到对象,返回的值就是null
1种复合类型:
object 后面学习的JavaScript对象属于复合类型
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
// 1、number 数字类型
var iNum = 10;
// 获取变量类型typof
alert(typeof(iNum))
// 获取变量值
alert(iNum)
// string 字符串类型
var fNum = 10.1;
// 获取变量类型typof
alert(typeof(fNum))
// 获取变量值
alert(fNum)
// 字符串类型
var sName = "xlz"
// 获取变量类型typof
alert(typeof(sName))
// 获取变量值
alert(sName)
// boolean 布尔类型 true 或 false
var bIsTrue = true;
// 获取变量类型typof
alert(typeof(bIsTrue))
// 获取变量值
alert(bIsTrue)
// undefined undefined类型,变量声明未初始化,它的值就是undefined
var unData;
// 获取变量类型typof
alert(typeof(unData))
// 获取变量值
alert(unData)
// null null类型,表示空对象,如果定义的变量将来准备保存对象
var nullData = null;
// 获取变量类型typof
alert(typeof(nullData))
// 获取变量值
alert(nullData)
// 复合类型,JavaScript对象属
var oPenson = {
name :"xlz",
age : 18,
}
var type = typeof(oPenson)
// 获取变量类型typof
alert(type)
// 获取变量值
alert(oPenson.name)
alert(oPenson.age)
</script>
</head>
<body>
</body>
</html>
变量命名规则:
1.区分大小写;
2.第一个字符必须是字母、下划线(_)或者美元符号($)
3.其他字符可以是字母、下划线、美元符或数字
匈牙利命名风格:
对象o Object 比如:oDiv
数组a Array 比如:aItems
字符串s String 比如:sUserName
整数i Integer 比如:iItemCount
布尔值b Boolean 比如:bIsComplete
浮点数f Float 比如:fPrice
函数fn Function 比如:fnHandler
4.函数的定义和调用
js中的函数:函数可以重复使用代码块,使用关键字function定义函数;
定义有参数有返回值的函数(和python一样)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
// 定义函数
function fnShow(){
alert("这是一个函数");
}
// 函数调用、
fnShow();
// 定义一个有参数有返回值的函数
function fnSum(iNum1, iNum2){
var iResult = iNum1 + iNum2;
// ++ 等价于 +=
iResult++;
return iResult;
}
// 调用函数
var iNum = fnSum(4, 6);
alert(iNum);
</script>
</head>
<body>
</body>
</html>
5.变量的作用域
局部变量:函数内部定义的变量,只能在函数内部使用;
全局变量:在函数外部定义的变量,可以在不同函数内使用和修改;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
// 局部变量
// function fnShow1(){
// var iNum1 = 18;
// alert(iNum1);
// }
// // 调用函数
// fnShow1();
// 局部变量不能在外部使用,没有结果显示
// alert(iNum1);
// 全局变量
var iNum2 = 10;
alert(iNum2);
function fnShow2(){
// js中字符串类型可以和数字类型直接进行相加
// 数字会自动转化为字符串类型
alert("全局变量:" + iNum2);
// ++ 等价于 += 1
iNum2++;
}
// 调用函数
fnShow2();
// 函数内部可以修改全局变量
alert(iNum2);
</script>
</head>
<body>
</body>
</html>
6.条件语句
条件语句就是通过条件来控制程序的走向;
语法和python十分相似
- if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
- if…else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
- if…else if…else 语句 - 使用该语句来判断多条件,执行条件成立的语句
区别:判断多条件用if…else if …else
比较运算符:
==:等于(值)
===:全等于(值和类型)
!=:不等于
>:大于
<:小于
>=:大于等于
<=:小于等于
逻辑运算符:
&& and 与
|| or 或
! not 非
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
// if 语句 ==
var iNum = 10;
var sStr = "10";
if (iNum == sStr){
alert("条件成立");
}
// // ===
var iNum = 10;
var sStr = "10";
if (iNum === sStr){
alert("条件成立");
}
else{
alert("条件不成立")
}
// if...else if...else语句
var iScore = 50;
if (iScore > 60){
alert("及格了");
}
else if(iScore == 60){
alert("刚及格");
}
else{
alert("没有及格")
}
// && :且, ||:或 ,!: 非
var iNum1 = 50;
var iNum2 = 100;
if(iNum1 >= 60 && iNum2 >=100){
alert("条件成立");
}
else{
alert("条件不成立")
}
// || 或
var iNum1 = 50;
var iNum2 = 100;
if(iNum1 >= 60 || iNum2 >=100){
alert("条件成立");
}
else{
alert("条件不成立")
}
// !一定要加括号不然会判断iNum的值
var iNum = 50;
if(!(iNum >= 60)){
alert("条件成立");
}
else{
alert("条件不成立")
}
</script>
</head>
<body>
</body>
</html>
7.标签元素
- html的属性和js里面属性大多数写法一样,但是“class” 属性写成 “className”
- “style” 属性里面的属性,有横杠的改成驼峰式,比如:“font-size”,改成”style.fontSize”
步骤:
1.获取标签元素;
可以使用内置对象document上的getElementById方法获取页面上设置了id属性的标签元素获取到的一个html对象,让后把它赋值给一个变量;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
// // 定义加载函数
// function fnLoad(){
// // 通过内置方法获取对应的id的标签,如果没有成功返回null
// var oBtn = document.getElementById("btn");
// alert(oBtn);
// }
// // onload事件:页面加载完毕后触发
// window.onload = fnLoad;
// 工作的写法
// window.onload = function(){
// var oBtn = document.getElementById("btn");
// alert(oBtn);
// }
// onclick事件:点击触发
function fnLoad(){
// 通过内置方法获取对应的id的标签,如果没有成功返回null
var oBtn = document.getElementById("btn");
alert(oBtn);
}
</script>
</head>
<body>
<!-- <input type="botton" value="按钮" id="btn"> -->
<input type="botton" value="按钮" id="btn" onclick="fnLoad()">
</body>
</html>
2.操作标签元素;
标签属性和样式修改
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.mybtn{
width: 100px;
height: 100px;
background: green;
}
</style>
<script>
function fnLoad(){
// 通过内置方法获取对应的id的标签,如果没有成功返回null
var oBtn = document.getElementById("btn");
alert(oBtn);
// 获取属性
alert(oBtn.value);
alert(oBtn.type);
// 修改属性
oBtn.value = "小廖子同学";
oBtn.style.background = "red";
// 获取样式
oBtn.className = "mybtn";
}
</script>
</head>
<body>
<input type="botton" value="按钮" id="btn" onclick="fnLoad()">
</body>
</html>
标签中内容的获取和修改
- innerHTML可以读取或者设置标签包裹的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
// 等待我们的页面数据加载完毕触发onload事件
window.onload = function(){
var oDiv = document.getElementById("mydiv")
// 获取标签中的内容
alert(oDiv.innerHTML)
// 修改标签属性
oDiv.innerHTML = "你好,阳光"
}
</script>
</head>
<body>
<div id="mydiv">小廖子同学</div>
</body>
</html>
8.数组的定义和操作
根据下标删除指定元素
什么是数组:
数组就是一组数据的集合,javascript 中,数组里面的数据可以是不同类型的数据,好比 python 里面的列表。
多维数组:
多维数组指的是数组的成员也是数组,把这样的数组叫做多维数组。
获取数组的长度:aArray.length
获取数组数据:alert(aArray0)
从数组最后删除和添加数据:pop(),push()
根据数组添加和删除元素:splice()
数组.splice(start,num,element1,......,elementN)
1. start:必需,开始删除的索引。
2. num:可选,删除数组元素的个数。
3. elementN:可选,在start索引位置要插入的新元素。
此方法会删除从start索引开始的num个元素,并将elementN参数插入到start索引位置。
console.log()类似于alert啊,不过不会打断操作。主要是方便调式javascript用的。你可以看到你在页面中输出的内容,不过需要浏览器支持控制台输出。在浏览器界面使用快捷键 F12 就能打开控制台,这个F12 最确切的叫法是开发人员工具。其中,Console 即控制台。点击右键的 Clear console 菜单 或者 输入 clear() /console.clear()然后按回车即可清空控制台内容。
相比alert他的优点是:
他能看到结构化的东西,如果是alert,弹出一个对象就是[object object],但是console能看到对象的内容。
console不会打断你页面的操作,如果用alert弹出来内容,那么页面就死了,但是console输出内容后你页面还可以正常操作。
console里面的内容非常丰富,你可以在控制台输入:console,然后就可看到;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
// 1.定义数据的两种方式
var aArray = new Array(1, 2, 3);
console.log(aArray);
var aArray = [1, 2, 3];
console.log(aArray);
// 2.多维数组
var aArray = [[1, 2, 3],[11, 22, 33]];
console.log(aArray);
// 3.根据下标查找元素(js不支持负数下标)
alert (aArray[0][0]);
// 4.根据下标修改数据
aArray[0][0] = 100;
console.log(aArray);
// 5。获取数据长度
alert(aArray.length);
// 6.z在末尾追加数据
var aArray = [10, 20, 30, 40, 50];
aArray.push("小廖子同学");
console.log(aArray);
// 7.删除数据 pop()不支持下标删除,删除最后一个元素
var aArray = [10, 20, 30, 40, 50];
aArray.pop();
console.log(aArray);
// 8.删除指定数据
var aArray = [10, 20, 30, 40, 50];
aArray.splice(1,2);
console.log(aArray);
// 添加指定数据
aArray.splice(1,0,"小廖子", "xlz")
console.log(aArray)
</script>
</head>
<body>
</body>
</html>
9.循环语句
循环语句的作用:
循环语句就是让一部分代码重复执行,javascript中常用的循环语句有:
- for
- while
- do-while
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
// for 循环
// var aArray = [3, 6, 9];
// for (var index = 0; index < aArray.length; index ++){
// var result = aArray[index];
// alert(result);
// }
// while 循环
// var aArray = [3, 6, 9];
// var index = 0;
// while(index<aArray.length){
// var result = aArray[index];
// alert(result);
// index++;
// }
// do while 循环,无论条件是否成立都会执行一次
var aArray = [3, 6, 9];
var index = 0;
do{
var result = aArray[index];
alert(result);
index++;
}while(index < aArray.length);
</script>
</head>
<body>
</body>
</html>
10.字符串
字符串拼接使用“+”运算符。
数字和字符串拼接会自动进行类型转换(隐式类型转换),把数字类型转成字符串类型进行拼接。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var iNum = 10;
var fNum = 10.1;
var sStr = "小廖子";
var sStr1 = "123"
// 把数字类型转化成字符串,进行相加
var iResult = iNum + fNum;
alert(iResult);
var iResult = iNum + sStr;
alert(iResult)
var iResult = fNum + sStr;
alert(iResult)
var iResult = fNum + parseFloat(sStr1)
alert(iResult)
</script>
</head>
<body>
</body>
</html>
11.定时器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
// 1.定时器
/*
function fnShow(name){
alert(name);
// 清除定时器
clearTimeout(tId)
}
// 创建定时器
var tId = setTimeout(fnShow, 2000, "小廖子");*/
// 2.重复定时器
function fnShow(name){
alert(name);
}
function fnStop(){
// 消除重复定时器
clearInterval(tId);
}
// 创建重复定时器
var tId =setInterval(fnShow, 3000, "小廖子");
</script>
</head>
<body>
<input type="button" value="停止" onclick="fnStop();">
</body>
</html>