WEB网页开发——day25 JavaScriput基础知识

为什么要学习javascript

1.表单验证 - 减轻服务器端压力
2.页面的动态交互
3.页面动态效果

什么是javascript

JavaScript是一种基于对象和事件驱动的 , 并具有安全性能的脚本语言
JavaScript的特点
向HTML页面中添加交互行为
脚本语言 , 语法和Java类似
解析型语言 , 边执行边解释

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

发展史:

	* 1992年,nombas公司 C--,最早的客户端脚本语言。专门用于表单验证。 后更名为 scriptEarth
	* 网景	scriptlive,后来找到sun公司合作,共同开发出  JavaScript
	* 微软抄袭JavaScript 定义了 JScript
	* ECMA(欧洲计算机制造商协会)定义了一套客户端脚本语言的规范  ECMAScript规范
	
		JavaScript = ECMAScript规范 + js自己特有的东西(BOM/DOM)

js与html结合方式

	* 内部js:
			* 定义<script>标签,标签体书写js代码
				* 注意:<script>标签定义的位置,会影响执行顺序,可以放到任意位置上
	* 外部js:
		* 定义<script>标签,通过src属性导入外部js文件
  • 基本数据类型:

ECMAScript规范

语法:

常量:

  • 基本数据类型:
    Java中:
    整型:byte short int long
    浮点型:float double
    布尔型:boolean
    字符型:char
  • js原始数据类型:
    Number 整数+小数
    undefined 未定义
    Boolean:true+false
    String:字符型+字符串
    Object :引用类型+引用对象

变量:

语法:

使用 var定义变量: var i = “abc”;
使用 var定义常量: Const i = “abc”
判断原始类型: alert ltypeof 变量名
* typeof运算符:获取变量的数据类型
* var关键字如果不书写,该变量则为全局变量

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 在页面上写一对script 标签,js代码放到这对标签内部
		  
		script这对标签,要放哪里,这对表可以放到页面的任何位置
		script这对标签放在前面和放到最后,是由区别的,代码的执行顺序是有区别
		-->
		<script type="text/javascript">
		/* 
			数据类型:Java 中的基本数据类型:四类八种
			 整数型:byte short int long
			 小数型: flaot double
			 布尔型:boolean
			 字符型:char
			 
			 引用类型:类,接口,枚举,数组
			
			JS:是一门弱类型语言
			他有几个原始数据类型:
			Number 数字型 整数,小数
			undefined 未定义
			Boolean  布尔型
			String  字符串类型 字符 字符串
			Object 引用类型 对象 null
		 */
			//定义变量  java中 数据类型 变量名=值
			//JS中 定义变量使用一个关键字 var
			
			var num=100;
			var num2=3.14;
			var str="abc";
			var obj=new Object();
			var flag=true;
			//有一个运算符 typeof 可以知晓他是什么原始数据类型
			alert(typeof num);
			alert(typeof num2);
			alert(typeof str);
			alert(typeof obj);
			alert(typeof flag);
			//ES5  
			//ES6 规范 可以定义常量 const
			const a=100; //定义常量
			alert(a);
		</script>
	</head>
	<body>
		
	</body>
	
</html>
语句

if
switch
while
do…while
for

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			//语句
			/* 
			 if
			  for
			  while
			  do  while
			  switch
			  语法跟Java中一样
			 
			 
			 */
			for (var i = 0; i < 10; i++) {
				//alert(i);
				document.write("<div  style='color:red;font-size: 30px;'>" + i + "</div>");
			}

			//计算 1---100的和
			var sum = 0;
			var num = 1;
			while (num <= 100) {
				sum += num;
				num++;
			}
			document.write(sum);

			/* switch (){
				case value:
					break;
				default:
					break;
			} */
		</script>
	</head>
	<body>

	</body>
</html>

运算符:自动类型转换
  • 一元运算符
    ++ – +(正) -(负)
    * 注意:在js中,如果传递给运算符的值,和 运算符想要接受的 值 的类型不匹配,则会自动类型转换

    其他类型转为number
    string:将字符串的字面值,转为number,如果字面值不是数字,则 转为NaN
    boolean: true为1 false 为0

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			//数学运算符: + - * / % ++  --
			//自动类型转换:当这个运算符运算的值,和他期望的值不一样,就会发生自动类型转换
			var a="a2"; //"a2"从字面上转不了数字的时候,就转成 NaN  不是数字的数字
			var b=3;
			var c=a*b; //NaN*3  NaN 参与数学运算,结果都是NaN
			alert(c);
			//字符串转数字,字面能转数字,就转成数字,转不了,转NaN
			
			var num=+"aaa10";
			//var num2=num*1;
			alert(num+1);
			//布尔类转数字 true 转1  false转成0
			var flag=false;
			var num3=flag+1;
			alert(num3);
			
			
			
			
		</script>
	</head>
	<body>
	</body>
</html>

  • 比较运算符
    * > < >= <=:
    * NaN参与的运算,结果都为fasle,除了(!=)
    * 字符串比较小大:如果长度一致按照字典顺序比较 长度不一致 那谁的长度长那就谁大
    * !=:
    * == ===(全等于):
    * 全等于比较时,先比较类型,如果类型不一致,直接返回false

  • 逻辑运算符
    && || !
    其他类型转boolean
    * number:非0为true,0和NaN为false,
    * string: 除了空字符串(""),其他都是true
    * null 和 undefined:转为false
    * 对象:所有对象都为true

  • 算术运算符:
    + - * / %
    注意:NaN 参与数学运算 结果都为NaN

  • 赋值运算符
    = += …

  • 三元运算符
    表达式 ? 值1 : 值2;

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			/* 
			 比较运算符:== === >=  <=  <  > !=    instanceof
			 */
			var str = "";
			var str2 = "d";
			//比较两个字符串 内容是否相同
			//alert(str==str2);
			//字符串转布尔类型: 空串转false  非空串转成true
			if (str) {
				alert(true)
			} else {
				alert(false)
			}

			//数字类型转布尔:0转成false  非0 转成true
			if (0) {
				alert(true);
			} else {
				alert(0);
			}

			var obj = new Object();
			obj = null;
			if (obj) {
				alert("对象非null转成true")
			} else {
				alert("null 转成false");
			}
			//undefined 转布尔 转成false
			var v;
			//alert(v);
			if (v) {
				alert("true")
			} else {
				alert(" undefined转成false");
			}

			var vv = NaN;
			//NaN 转布尔类型转成false
			if (vv) {
				alert("true")
			} else {
				alert("NaN转成false");
			}

			// ==   ===
			var aa = 1;
			var bb = "1";
			/* == 会发生自动类型转换 */
			var ff = aa == bb;
			alert(ff);
			/* === 先比较类型,如果类型不一致,就直接false .如果类型一致,再去比较值 */
			var fff = aa === bb;
		</script>
	</head>
	<body>
		
	</body>
</html>

案例:九九乘法表

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			for(var i=0;i<=9;i++){
				for(var j=0;j<=i;j++){
					document.write(j+"*"+i+"="+i*j+"&nbsp;")
				}
				document.write("<br>")
			}
		</script>
	</head>
	<body>
	</body>
</html>
案例:

对象:

js是一门基于对象的语言
基于对象:不能由原生的对象派生出新的对象。换句话说,不存在继承关系

Function(*****): 代表函数

创建方式:
* var fun = new Function(“参数列表”,“方法体”);
* function 方法名称(形参列表){
方法体
}
* var fun = function(){

}


<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			/* 函数:类似于Java中的方法,对一段功能逻辑的封装,以实现重复调用 */
			//定义函数的语法
			//方式1:
			var num=10;  //全局变量
			function show(){
				//封装功能逻辑
				//局部变量
				var a=10;
				var b=20;
				alert(a+b);
			}
			//直接调用函数
			show();
		//方式2:
		var test=function(){
			//局部变量
			var aa=100;
			var bb=200;
			alert(aa+bb);
		}
		//调用函数
		test();
		
		//匿名函数
		/* function(){
			//局部变量
			var aa=100;
			var bb=200;
			alert(aa+bb);
		} */
		</script>
	</head>
	<body>
	</body>
</html>

  • 2属性:
    length:形参的个数

  • 使用:
    * 函数名称(实参列表);
    * 特点:
    1.函数的调用,只与函数名称有关,与实参列表无关
    2.函数内部有内置对象 arguments 封装实参数组
    void运算符:拦截返回值,一般结合a标签一起使用
    * 注销a标签跳转功能,保留可被点击的功能
    <//a href=“javascript:void(0);” οnclick=“exit();”>退出
    JS中的内置对象

一:String 对象

  • 1.定义方式1: String str=new String(“abckdddd”);
    定义方式2:var str=“我爱你爱你”;

  • 2.属性:length: 字符串的长度

  • 3 方法:
    charAt() 返回在指定位置的字符。
    例子:var v=“abcd”;
    var a=v.charAt(2);

      	concat() 连接字符串。 
      		例子:var v="ab";  var a="cd";
      			var z=v.concat(a);
      		
      	indexOf() 根据字符检索此符在字符串中的索引。 
      		例子:var v="abcde";
      			var z=v.indexOf("c");			
    
      	lastIndexOf() 从后向前搜索字符串。 
      	substring() 提取字符串中两个指定的索引号之间的字符。 
      		var v="abcde";
      		var z=v.substring(0,3); 含头不含尾
    
      	toLowerCase() 把字符串转换为小写。
      		例子:
      	 var str = "Hello World!";
      	 document.write(str.toLocaleLowerCase());
    
    
      	  toUpperCase() 把字符串转换为大写。 
    
      	replace() 替换字符串。
      		例子: 
      		var v="abceaaaa";
      		var z=v.replace("a","h");  参1:被替换的字符/或字符串   参数2:替换成哪个字符/或字符串
    
      	split() 把字符串分割为字符串数组。
      		例子: 
      		var v="a#b#c#d";
      		var z=v.split("#");
    
      	* trim():去除字符串两端的空格
      		例子: 
                                                           var v="  abcd     ";
      		var z=v.trim();
    

三:Number对象

定义方式:var num=new Number(555.6666);
var num1=Number(5694);

方法:

toString() 把数字类型转成字符串类型
例子:
var v=Number(695444);
var z=v.toString();

toPrecision() 把数字格式化为指定的长度。也就是小数后面保留几位
例子:
var v=Number(3.5999999999999);
var z=v.toPrecision(4);

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			//创建对象
			var num = new Number(100);
			var num2 = Number(45.132432);
			// MAX_VALUE 可表示的最大的数。 1.0 4.0
			// 			MIN_VALUE 可表示的最小的数。 
			// 
			// 
			// 			toString 把数字转换为字符串,使用指定的基数。
			var str1 = num.toString()
			alert(str1+1);
			// 			toFixed 把数字转换为字符串,结果的小数点后有指定位数的数字。 
			var str2=num2.toFixed(3);
			alert(str2);
			// 			toPrecision 把数字格式化为指定的长度。
			var str3=num2.toPrecision(1);
			alert(str3)
		</script>
	</head>
	<body>
	</body>
</html>

四:Date 对象

定义方式: var myDate=new Date();

方法:
getTime() 获取从1970-01-01 00:00:00 到当前的毫秒值

toLocaleString() 将时间转化成本地格式 利于阅读

例子

var myDate=new Data();
var time=myDate.getTime();
var localTime=time.toLocaleString();

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			//定义对象
			var data=new Date();
			//获取年份
			var year=data.getFullYear();
			document.write(year);
			//获取当前毫秒值
			var time=data.getTime();
			document.write(time);
			//获取当前时间
			var local=data.toLocaleString();
		document.write(local);
		</script>
	</head>
	<body>
	</body>
</html>

五:Math 对象

特点: 该对象不需要创建 直接对象名点上方法

Math.random();随机产生0----1 之间的随机数 var num=Math.random()*100;
Math.round(2.36); 对小数进行四舍五入 得到一个整数 var n=Math.round(Math.random()*100);
Math.min(15,25); 取最小值
Math.max(15,25);取最大值
Math. abs(-2) 返回数的绝对值。
Math.floor(2.6);向下取整
Math.ceil(3.82);向下取整

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			//产生随机数
			var ran = Math.random() * 100;
			document.write(ran);
			//四舍五入
			var si = Math.round(3.54546435);
			alert(si);
			//  Math.min(15,25); 取最小值
			var is1 = Math.max(15, 25); //取最大值
			var is2 = Math.abs(-2) //返回数的绝对值。 
			var is3 = Math.floor(2.6); //向下取整
			var is4 = Math.ceil(3.82); //向上取整
			alert(is1);
			alert(is2);
			alert(is3);
			alert(is4);
		</script>
	</head>
	<body>
	</body>
</html>

案例:4个随机数

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			var str = "421421342gfdvgdf";
			//随机截取4个角标,然后取出值进行拼接
			var one = Math.floor(Math.random() * str.length);
			var two = Math.floor(Math.random() * str.length);
			var three = Math.floor(Math.random() * str.length);
			var four = Math.floor(Math.random() * str.length);
			var number=str.charAt(one).concat(str.charAt(two)).concat(str.charAt(three)).concat(str.charAt(four));
		alert(number);
		</script>
	</head>
	<body>
	</body>
</html>

六:数组对象:

  • 定义方式: var arr=new Array(2,6,8);
    var arr1=[6,“a”,6];
    属性: length 数组的长度

  • 特点:
    在js中数组可以存储任意类型元素
    在js中数组的长度可变

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			//Array数组对象
			//创建数组对象的方式
			//1.JS中的数组长度是可变的
			//2.JS中的数组元素可以是任意类型
			//方式1:
			var arr = new Array();
			arr[0] = 12;
			arr[1] = "你好";
			arr[2] = true;
			alert(arr[0]);
			//方式2:
			var arr2 = new Array(10, 20, 30, 40, 50, 60, "abc");
			alert(arr2[arr2.length - 1]);
			//方式3
			var arr3 = new Array(3);
			alert(arr3.length);
			alert(arr3[3] = 10);
			//简写
			var arr4=[20,10,60,90,100];
			//一维数组的遍历
			for(var i=0;i<arr4.length;i++){
				document.write(arr4[i]);
				document.write("<br>");
			}
		    //冒泡排序 选择排序
			document.write("<hr>")
			//二维数组的遍历
			var arr5=[[20,50],[20,30],[10,20]];
			for(var i=0;i<arr5.length;i++){
				for(var j=0;j<arr5.length;j++){
					document.write(arr5[i][j]);
					document.write("<br>");
				}
				
			}
		</script>
	</head>
	<body>
	</body>
</html>

  • 方法:
    • concat() 连接两个或更多的数组,并返回结果。
      例子:var v=[1,2]; var v2=[3,4];
      var z=v.concat(v2);

    • join()
      把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
      var v=[1,2,3];
      var z=v.join("-"); 给数组元素之间添加分隔符

    • pop() 删除并返回数组的最后一个元素
      例子:
      var arr = [1, 6, 20];
      alert(arr.pop());

    • push() 向数组的末尾添加一个或更多元素,并返回新的数组长度。
      例子:var arr = [1, 6, 20];
      alert(arr.push(28));
      reverse() 颠倒数组中元素的顺序。

    • sort() 对数组的元素进行排序 从小到大
      * 默认排序方式:字典顺序
      * 要想实现自己的比较方式,需要传入比较器方法对象
      例子:var arr = [1, 6, 20, 100];
      alert(arr.sort(bijiao));
      function bijiao(a, b) {
      if(a > b) {
      return 1;
      } else if(a == b) {
      return 0;
      } else {
      return -1;
      }
      //return a-b;
      }

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			//concat() 连接两个或更多的数组,并返回结果。 
			var arr1 = [20, 30, 50];
			var arr2 = [20, 30, 50];
			var arr3 = arr1.concat(arr2)
			alert(arr3);
			//把字符串中的字符用指定的拼接符拼接起来
			var arr4 = arr3.join("=");
			alert(arr4);
			//pop() 删除并返回数组的最后一个元素 
			var arr5 = arr1.pop();
			alert(arr5);
			//splice() 删除元素,并向数组添加新元素。
			arr1.splice(1, 1, 100, 200, 300);
			alert(arr1);
			//push() 向数组的末尾添加一个或更多元素,并返回新的长度。
			arr1.push(400, 500, 600, 700, 800);
			alert(arr1);
			//unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
			var arr7 = arr2.unshift(8, 7, 6, 5, 4, 3, 2, 1);
			alert(arr2);
			//reverse() 颠倒数组中元素的顺序  
			arr2.reverse();
			alert(arr2);
			//slice() 从某个已有的数组返回选定的元素 
			var arr8 = arr2.slice(0, 3)
			alert(arr8);
			//sort()不传参 默认按照字典顺序排列
			//定义一个比较器
			//如果要按照大小排序,那就传入一个比较器
			arr1.sort(function(a, b) {
				return a - b;
			})
			alert(arr1);
			//简介语法
			arr1.sort((a,b)=>a-b);
			alert(arr1);
		</script>
	</head>

	<body>
	</body>
</html>

七* Global:全局方法对象

		* 特点:该对象中的方法调用,不需要对象的引用,可直接使用
		
		* isNaN() 检查某个值是否是NaN。 
			例子:var v=NaN;  var v1="abc"; var v2=123;
				var b=isNaN(v); 
				var b1=isNaN(v1);
				var  b2=isNaN(v2);

			
			* parseInt() 解析一个字符串并返回一个整数。  
				* 从左向右依次查找,每一位是否是数字,直到遇到不是数字为止。将前边的值转为数字
					比正号强大些  var v=+“123”;
				例子:  var v=“152abc”
				var  v="123";
				var z=parseInt(v)+1;
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			//直接调用即可
			var a = NaN;
			var b = NaN;
			//alert(NaN!=NaN);//true  用==号判断不出来
			//判断一个数据是不是NaN
			var f = isNaN(a);
			//alert(f);//true

			// var str="123abcd";
			//alert(str*1);//]是NaN

			//把字符串转换成数字
			var strs = parseInt(str);
			//alert(strs);//把不是数组的部分进行剔除
			//把字符串转换成浮点数
			var str2 = "3.123232";
			var str3 = parseFloat(str2);
			// alert(str3);
			// encodeURI()URL 编码
			//decodeURI()  URL 解码
			//	http://127.0.0.1:8848/mydemo?username=%E5%BC%A0%E4%B8%89  URL 编码
			//编码
			var v=encodeURI("李四");
			alert(v);
			alert(decodeURI("%E5%BC%A0%E4%B8%89"));
		</script>
	</head>
	<body>
	<a href="/mydemo?username=张三">提交</a>

	</body>
</html>

八.RegExp(**):正则表达式对象

在这里插入图片描述在这里插入图片描述

  • 创建:
    // 方式一
    var regex = new RegExp(“正则表达式”, “标志”);
    // 方式二
    var regex = /正则表达式/标志
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			//创建正则对象
			//方式一
			var reg=new RegExp('^[a-z]{6,13}$',i);
			//方式二
			var regxs=/^[a-z]{6,13}$/i;
			//test() 判断这个字符串,是否符合 正则
			var str="safdsfs";
			var reg=regxs.test(str);
			// alert(reg);
			//exec() 截取符合正则的数据
			//案例:
			//查找出三个字符组成的单词。
			var str2  ="da jia hao hao xue xi a";
			var reg2=/\b[a-z]{3}\b/g;
			var line=null;
			while((line=reg2.exec(str2))!=null){
				alert(line);
			}
		</script>
	</head>
	<body>
	</body>
</html>

  • 正则表达式对象常用的方法:
    test() 使用正则对象去匹配字符串 如果匹配成功返回ture,否则返回false.
    exec() 根据正则表达式去查找字符串符合规则的内容。

  • 模式:
    g (全文查找出现的所有 pattern)
    i (忽略大小写)

    var str = “hello123”;
    var reg = /1+$/i;
    alert(“匹配吗?”+reg.test(str));

  • 查找出三个字符组成的单词。
    */
    var str =“da jia hao hao xue xi a”;
    var reg = /\b[a-z]{3}\b/gi;
    var line ="";
    while((line = reg.exec(str))!=null){
    document.write(line+"
    ")
    }


  1. A-Z0-9 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值