当前位置: 移动技术网 > IT编程>开发语言>JavaScript > Javascript知识点总结(一)

Javascript知识点总结(一)

2020年07月24日  | 移动技术网IT编程  | 我要评论

一、走进javascript

什么是JS?

  • JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语⾔,内置⽀持类型
  • JavaScript是当今最流⾏的脚本语言,我们生活中看到的网页和基于html5的app⾥⾯的交互逻辑都是由javascript驱动的
  • 一句话概括就是javascript是一种运行在浏览器中的解释型的编程语⾔

JS由什么组成

  • ECMAScript : 解释器、翻译者 (描述了该语⾔的语法和基本对象) 它是javascript的标准
  • DOM : Document Object Model 文档对象模型 W3C是DOM的标准
  • BOM : Browser Object Model 浏览器对象模型 缺乏标准

二、初始javascript

(一)JS编写的最佳位置

  • 一般情况下JS是写在页⾯的任何位置都可以的,需要script标签包着,但是别写在html标签外

  • 最常见的是写在head标签内部和body内部

  • 写在head标签内需要写上window.onload包着,要不然会报错,因为执行js时页⾯标签还没加载,window.onload的作用是当页⾯加载完成后自动触发事件(一个页面应该只有一个window.onload事件,因为如果写多个的话会覆盖只执行最后⼀个)

  • 总结:js理应写在body结束标签之前

(二)获取标签元素并进行操作

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">
		#tim{
			width: 200px;
			height: 200px;
			border:1px solid black;
			margin:0 auto;
		}
	</style>
</head>
<body>
	<div id="tim" class="xiaod"></div>
	<script type="text/javascript">
		//返回这个id名的元素
		// document.getElementById('tim').style.background='red'
		//返回所有这个标签名的元素的集合  获取到的是一个集合,拥有数组的特性
		// document.getElementsByTagName('div')[0].style.background='black'
		//通过classname获取到的也是一个集合
		// document.getElementsByClassName('xiaod')[0].style.background='yellow'
		//document.querySelector("css任意选择器") 返回第一个
		// document.querySelector("div").style.background='black'
		//document.querySelectorAll("css任意选择器")  返回符合的所有
		document.querySelectorAll("div")[0].style.background='red'
	</script>
</body>
</html>

(三)JS输出及调试方式

  • 弹窗型输出:alert(‘输出内容’)
  • 浏览器调试窗口输出:console.log(‘输出内容’)
  • innerHTML和innerText给获取到的元素一些内容:document.getElementById(‘id名’).innerHTML=‘内容’
  • document.write(‘输出内容’),输出内容会清空原有的html再生成一个新的html
    注意,我们的document.write()重写文档是发生在文档加载完成后事件触发里面

(四)JS常见的事件

JS事件就是我们的行为能被侦测到,且触发相对应的函数(函数里面写我们要做的事情)

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">
		#tim{
			width:300px;
			height: 300px;
			background:red;
			margin: 0 auto;}
	</style>
</head>
<body>
		<div id="tim"></div>
		<input type="" name="" id="xd">
		<script type="text/javascript">
			//点击事件
			document.getElementById("tim").onclick=function(){
				//函数里面写我们要做的事情
				alert('我是被点击了')
			}
			//鼠标移入事件
			document.getElementById("tim").onmouseover=function(){
				console.log('鼠标移入我的范围内了')
			}
			//鼠标移出事件
			document.getElementById("tim").onmouseout=function(){
				console.log('鼠标移出我的范围内了')
			}
			//元素改变事件,一般用在表单元素
			document.getElementById('xd').onchange=function(){
				console.log(document.getElementById('xd').value)
			}
			//键盘事件,按下键盘事件
			document.getElementById('xd').onkeydown=function(){
				console.log('键盘按下了')
			}
			//获取焦点事件
			document.getElementById('xd').onfocus=function(){
				console.log('我获取到焦点了')
			}
			//失去焦点事件
			document.getElementById('xd').onblur=function(){
				console.log('我失去焦点了')
			}
		</script>
</body>
</html>

(五)变量和数据类型

如何定义变量(创建变量):用var来定义变量 var name
变量的首字⺟必须是由字母(a-zA-Z)或下划线(_)或美元符
($)开头,不能是数字,后面的可以是字母或下划线或美元符或者是数字,并且是区分大小写的

基础数据类型:字符串 string,数字(整型浮点型) number,布尔 boolean ,null 空对象 ,undefined 未定义
复杂数据类型:数组 Array,对象 Object
检测数据类型的两种基本⽅方法:typeof,Object.prototype.toString.call(‘数据’) //鉴别复杂数据类型、引用数据类型

数据类型转换

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<script type="text/javascript">
			var a='123'
			var b='abc'
			//强制类型转换(显式转换)
			console.log(a,"类型:"+typeof(a))
			console.log(a,"用number进行类型转换之后的类型:"+typeof(Number(a)))
			//用number转换一个是字符串类型,但内容不是数字
			console.log(b,"类型:"+typeof(b))
			console.log(b,Number(b),"用number进行类型转换之后的类型:"+typeof(Number(b)))
			//NaN是not a number的缩写 意思是 不是一个数字
			var c='3.1415926abc'
			console.log(c,'整形转换:'+parseInt(c))
			console.log(c,'浮点型转换:'+parseFloat(c))
			var d=123456
			console.log(d,String(d),typeof(String(d)))
			console.log(d,d.toString(),typeof(d.toString()))
			console.log(d,Boolean(d))
			//隐式转换
			//数字跟数字相加,不用转换类型
			// var sum
			// sum=1+2
			// console.log('sum='+sum)
			//数字跟字符串相加 发生类型转换,会变成字符串之间的拼接,就是把我们的数字1变成了字符串‘1’
			var sum
			sum=1+'2'
			console.log('sum='+sum,typeof(sum))
			if(12=='12'){
				console.log('判断成立了,我被执行了')
			}
	</script>
</body>
</html>

复杂数据类型
数组创建:

  • 直接创建:var arr=[] //创建空数组
    var arr1=[1,2] //创建有内容的数组
  • 利用构造函数创建:var arr1 = new Array();//创建空数组
    var arr2 = new Array(10);//创建⼀个长度为10的数组
    var arr3 = new Array(5,4,3,2,1);//创建数组并初始化

对象创建

  • 直接创建:var obj={} //创建空对象
    var obj1={a:1,b:2} //创建有内容的对象
  • 利用构造函数创建:var obj=new Object()

三、函数

(一)函数的定义与调用

1.函数定义

  • function fun(){console.log(1)}
  • var fun=function(){console.log(2)}
  • (function fun(){}) //函数表达式声明方式,只在括号内起作用,外部无法访问
  • var fun= new Function(console.log(3)) //这种方式函数会自调用(函数自己完成调用动作)

2.函数调用
fun()
3.补充命名规范

  • 变量 小驼峰命名法
    第一个单词以小写字母开始,从第二个单词开始以后的每个单
    词的首字母都采用大写字母
  • 函数名 跟变量一样
  • 常量 全大写,单词间用下划线隔开(_)

4.实例

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">

		#tim{
			width: 100px;
			height: 100px;
			background: red;
			margin: 0 auto;
		}
	</style>
</head>
<body>
	<button id="taller" onClick="taller()">增高</button>
	<button id="longer" onClick="longer()">增长</button>
	<button id="changebg" onClick="changebg()">改变背景颜色</button>
	<div id="tim" ></div>
	<script type="text/javascript">
		//获取到要改变的div  id为tim
			var oDiv=document.getElementById('tim')
			//写点击增高的按钮时需要调用的函数
			var taller=function(){
					oDiv.style.height='300px'
			}
			//写点击增长的按钮时需要调用的函数
			function longer(){
					oDiv.style.width='300px'
			}
			//写点击改变背景颜色的按钮时需要调用的函数
			function changebg(){
					oDiv.style.background='black'
			}
		// window.οnlοad=function(){
		// 	//给我们的增高按钮添加点击事件
		// 	document.getElementById('taller').οnclick=function(){
		// 		//获取id名为tim的div
		// 		document.getElementById('tim').style.height='300px'
		// 	}
		// 	//给我们的增高长按钮添加点击事件
		// 	document.getElementById('longer').οnclick=function(){
		// 		//获取id名为tim的div
		// 		document.getElementById('tim').style.width='300px'
		// 	}
		// 	//给我们的改变背景颜色按钮添加点击事件
		// 	document.getElementById('changebg').οnclick=function(){
		// 		//获取id名为tim的div
		// 		document.getElementById('tim').style.background='black'
		// 	}
		// }
	</script>
</body>
</html>

(二)函数传参取参

1.普通传参取参
实例

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">
		#tim{
			width: 100px;
			height: 100px;
			background: red;
			margin: 0 auto;
		}
	</style>
</head>
<body>
	<button id="taller" onClick="change('height','300px')">增高</button>
	<button id="longer" onClick="change('width','300px')">增长</button>
	<button id="changebg" onClick="change('background','black')">改变背景颜色</button>
	<div id="tim" ></div>
	<script type="text/javascript">
		//获取到要改变的div  id为tim
			var oDiv=document.getElementById('tim')
			function change(styleattr,value){
				//两种写法是一样的,但是如果需要传入变量就需要用第二种
					// oDiv.style.styleattr=value
					oDiv.style[styleattr]=value
			}
	</script>
</body>
</html>

2.不定参
场景:需要写一个方法来做求和,但是不知道传入的参数有多少个
例如函数名是sum 调用的时候可能是sum(1,2,3,4,5),也有可能是sum(1,2,3,4) 这个时候该怎么编写这个求和函数呢?
实例

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<script type="text/javascript">
		//利用arguments来编写一个求和函数
		function sum(){
			var sum=0
			for(var i=0;i<arguments.length;i++){
				sum=sum+arguments[i]
			}
			console.log(sum)
		}
		sum(1,2,3,10,1,2,3,10,1,2,3,10,1,2,3,10)	
	</script>
</body>
</html>

(三)变量作用域

变量分为局部变量和全局变量

  • 局部变量 只在定义的函数内部使用
  • 全局变量 可以在整个script作用域内都可以使用
  • 作⽤用域链,只有在自己当前的小作用域内找不到才会向父级作用域寻找,直到找不到为止(存在同名变量时,在当前作用域内局部变量 会覆盖全局变量,局部变量优先级比较高)
  • 闭包简单理解:可以调用函数内部变量的函数

(四)函数返回值

实例

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
		<script type="text/javascript">
			//函数不写返回值会默认返回undefined
			function fun(){
				var tim=10
				var xd=20
				var obj={'tim':tim,'xd':xd}
				return obj
			}
			console.log(fun())
		</script>
</body>
</html>

四、程序的流程控制

实例1(JS判断)

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<script type="text/javascript">
		var a=9
		//判断  一个=表示赋值   两个==是判断左右两边是否相等 还会进行类型的转换
		//三个===是全等的类型,意思是不会转换类型 ,要判断===左右两边的类型和值都相等才会返回true
		// if(a==10){
		// 	console.log('a等于10是成立的')
		// }else{
		// 	console.log('a等于10是不成立的')
		// }

		// if(a=='11'){
		// 	console.log('两个==会转换类型')
		// }else if(a==10){
		// 	console.log('a等于10是成立的')
		// }else{
		// 	console.log('a不等于10 也不等于11')
		// }

		//全等是三个=== ,需要左右两边的类型和值都一样才返回true
		// if(a==='9'){
		// 	console.log('现在的是指和类型都相等')
		// }else{
		// 	console.log('现在的是指和类型不全相等,有可能是值不相等,有可能是类型不相等,也有可能两者都不相等')
		// }

		//三目运算    条件?'成立执行冒号前面的': '不成立执行冒号后面的'
		// var b=10
		// b==='10'?console.log('成立'):console.log('不成立')

		//switch  case 的高级用法
		function fun(type){
			switch(type){
				case 0:
				console.log('传入的条件是0');
				break;
				case 1:
				console.log('传入的条件是1');
				break;
				case 2:
				console.log('传入的条件是2');
				break;
				case 3:
				console.log('传入的条件是3');
				break;
				case 4:
				console.log('传入的条件是4');
				break;
				default:
				console.log('我是默认的,就是上述条件都不成立就输出我');
				break;
			}
		}
		fun(0)
	</script>
</body>
</html>

实例2(JS循环)

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<script type="text/javascript">
		//第一种 while循环
		//1、创建循环变量
		// var tim =10
		// //2、判断循环条件
		// while(tim>=5){
		// 	//3、判断成立就执行循环体里面的操作
		// 	console.log(tim)
		// 	//4、更新循环变量
		// 	tim=tim-1
		// 	// tim--
		// }

		//  do  while 循环
		//创建循环变量
		// var tim = -1;
  //           //即使初始条件不成立,循环体内容还是会执行一次
		// do{
		// 	//执行循环体内容
		//     console.log(tim);//10 9 8 7 6 5 4 3 2 1 0
		//     //更新循环变量
		//     tim--;
		//     }while(tim>=0);//判断循环条件
	            
		// console.log(tim);//-1

		//for循环  一般拿来循环数组
		// var arr=['篮球','足球','乒乓球','羽毛球','排球']
		// console.log(arr.length,arr[4])
		// for(var i=0;i<arr.length;i++){
		// 	console.log(arr[i])
		// }


		//for in  一般拿来循环对象
		var  obj={a:'篮球',b:'足球',c:'乒乓球'}
		// console.log(obj.b)
		for(o in obj){
			// console.log(o)
			console.log(obj[o])
		}
	</script>
</body>
</html>

实例3(break&continue)

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<script type="text/javascript">
		//break用于循环体内部跳出循环
		// for(var i=0;i<=5;i++){
		// 	if(i==3){
		// 		break;
		// 	}
		// 	console.log(i)
		// }
		// console.log(i,'我是循环体外的i,不是循环体内部的内容')
		//continue用于中断符合判断条件的当前迭代
		for(var i=0;i<=5;i++){
			if(i==3){
				continue;
			}
			console.log(i)
		}
		console.log(i,'我是循环体外的i,不是循环体内部的内容')
	</script>
</body>
</html>

实例4(真和假)

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<script type="text/javascript">
			//判断里面的真假
			// 假:  false  数字0   空字符串   null  undefined  NAN
			//除了假的都是真的
			var  a={a:'1'}
			var key=true
			if(key){
				console.log('我是真的')
			}else{
				console.log('我是假的')
			}
	</script>
</body>
</html>

实例5(逻辑运算符)

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<script type="text/javascript">
			//判断里面的真假
			// 假:  false  数字0   空字符串   null  undefined  NAN
			//与 &&   意思是判断条件都需要为真才返回真
			var  a=false  
			var  b=undefined
			var  c=null
			// if( a && b && c){
			// 	console.log('a和b都是真的')
			// }else{
			// 	console.log('a和b不全是真')
			// }

			//或  ||  只需要有一个条件成立为真  就返回真

			// if( a || b || c){
			// 	console.log('a或b或c有一个为真')
			// }else{
			// 	console.log('三者都为假')
			// }

			// !  非   真变成假  假变成真

			if(!a){
				console.log('a是假')
			}
	</script>
</body>
</html>

本文地址:https://blog.csdn.net/qq_45493915/article/details/105904237

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网