【java基础之JS篇(上)】

***【Java基础之JavaScript】***

2020.10.10 coin

一、 JS的三种使用方式

1、行内JS

​ 在html标签上直接写JS代码

2、内部JS

​ 在script标签中写JS代码,script标签可以放在head中或body中(建议放在body标签最后)

3、外部JS

​ 定义JS文件,通过script标签的src属性引入对应的JS文件
​ 注:如果script标签设置了src属性,则在script双标签之间的JS代码不会生效

<!--  行内JS -->
		 <button onclick="alert('Hello World!');">按钮</button>
		 <!-- 内部JS-->
		 <script type="text/javascript">
		 	// alert("这是一个按钮!");
		 </script>
		 <!-- 引入外部js文件  -->
		 <script src="js/test.js" type="text/javascript" charset="utf-8"></script>

二、基础语法

2.1 语句:

​ 1. JS代码一行为单位,代码从上往下执行,一行一条语句。
​ 2. 语句不加分号结尾,如果一行定义多条语句,每句语句只会必须以分号结尾。(建议都加分号)
​ 3. 表达式不需要以分号结尾,如果加了分号则JavaScript引擎会当做语句执行,生成无用的语句。

2.2注释:

​ 1. HTML代码注释:<!-- HTML注释 – >
​ 2. JS代码注释:
​ // 单行注释
​ /* 多行注释 */

2.3标识符:

​ 规则
​ 由Unicode字母、_、$、数字组成、中文组成
​ (1)不能以数字开头
​ (2)不能是关键字和保留字
​ (3)严格区分大小写
​ 规范
​ (1)见名知意
​ (2)驼峰命名或下划线规则

2.4关键字(保留字):

​ 声明变量时,不要使用关键字

三、变量

变量

​ JS是一种弱类型的语言,在声明变量的时候不需要指明数据类型,直接用var修饰符进行声明。

​ 注:也可以不使用var修饰符,直接声明并赋值。

3.1 变量的声明:

​ 1、先声明再赋值

//先声明再赋值
var coin;
coin = 10000;
console.log(coin);

​ 2、声明并赋值

//声明的同时赋值
var coin=12000;
console.log(coin);

3.2 变量的注意点:

​ 1、如果变量只声明不赋值就会显示undefined

//如果变量只声明不赋值就会显示undefined
var coin;
console.log(coin);//undefined

​ 2、如果变量未声明就使用就报错

//如果变量未声明就使用就报错
console.log(coin);//coin is not defined

​ 3、可以使用var声明多个变量

//可以使用var声明多个变量
var coin,sam,sliver = 15000;
console.log(coin);//undefined
console.log(sam);//undefined
sonsole.log(sliver);//15000

​ 4、如果重新声明一个已经存在的变量,无效

//如果重新声明一个已经存在的变量,无效
var coin;
coin=13000;
console.log(coin);
var coin;
console.log(coin);//13000;

​ 5、如果重新声明一个已经存在的变量并且赋值,会被覆盖

//如果重新声明一个已经存在的变量并且赋值,会被覆盖
var coin;
coin=13000;
console.log(coin);
var coin=14000;
console.log(coin);//14000

​ 6、众所周知JS是一种动态、弱类型的语言,可以声明任意数据类型的变量

//众所周知JS是一种动态、弱类型的语言,可以声明任意数据类型的变量
var str = "Hello World"; // 字符串类型
var flag = true; // 布尔类型
console.log(str);
console.log(flag);
console.log("true");

3.3 变量名提升

JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。
这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升。

注意:

变量提升只对 var 命令声明的变量有效,如果变量不是用 var 命令声明的,就不会发生变量提升。

<script type="text/javascript">
			 /*  变量名提升 */
			 console.log(flag);
			 console.log(name);
			 
			 
		 	/*  变量的声明  */
			// 1. 先声明在赋值
			var a; 
			a = 1;
			console.log(a);
			// 2. 声明并赋值
			var b = 2;
			console.log(b);
			
			/* 变量的注意点  */
			// 1. 如果变量只声明而未赋值,则显示undefinded
			var c; // 声明变量
			console.log(c); // undefined
			
			// 2. 如果变量未声明就使用,则会报错
			// console.log(d); // d is not defined
			
			// 3. 可以使用var同时声明多个变量
			var aa,bb,cc = 10;
			console.log(aa); // undefinded
			console.log(bb); // undefinded
			console.log(cc); // 10
			
			// 4. 如果重新声明一个已存在的变量,是无效
			var a;
			console.log(a); // 1
			
			// 5. 如果重新声明一个已存在的变量并赋值,则会覆盖
			var a = 10;
			console.log(a); // 10
			
			// 6. JS是一种动态的、弱类型语言,可以声明任意数据类型的变量
			var str = "Hello World"; // 字符串类型
			var flag = true; // 布尔类型
			console.log(str);
			console.log(flag);
			console.log("true");
			
			
			// 不使用var声明变量
			name = "zhangsan";
			// console.log(name);
			
		 </script>

四、数据类型

数据类型:JS是弱类型的语言,变量没有数据类型,数据有类型。

4.1 Undefined类型:

值不存在

出现的情况:

​ 1、变量只声明未赋值,值为undefined

​ 2、当定义函数需要形参,调用函数未传递实参时,参数的值为undefined

​ 3、当函数没有返回值,接受值为undefined

4.2 Null类型

表示空值

注意点:

​ 1)、使用typeof操作符测试 null返回object字符串。

​ typeof操作符:判断变量的类型

​ 2)、undefined派生自null,所以等值比较返回值是true。未初始化的变量和赋值为null的变量相等。

4.3 Boolean类型

true 和f alse

4.4 数值型

数值型包含两种数值:整型和浮点型。
1)所有数字(整型和浮点型)都是以 64 位浮点数形式储存。所以,JS中 1 与 1.0 相等,而且 1 加上 1.0 得到的还是一个整数。浮点数最高精度是17位小数,由于浮点数运算时可能不精确,尽量不要使用浮点数做判断。
2)在存储数值型数据时自动将可以转换为整型的浮点数值转为整型。

4.5 字符串类型

  1. 使用’'或""引起来

  2. 可以使用"+"对字符串进行拼接

4.6 对象类型

数组

​ var 数组名 = [ ];

对象

​ var 对象名 ={ };

函数

​ function 方法名 ( ) {

}

<script type="text/javascript">
				/* undefined类型  */
				// 1. 变量只声明未赋值,值为undefined
				var a;
				console.log(a);
				
				// 2. 当定义函数需要形参,调用函数未传递实参时,参数的值为undefined
				// 定义函数   function 方法名([参数]) {}
				function fn01(str) {
					console.log(str);
				}
				// 调用方法 方法名([参数]);
				fn01();
				
				// 3. 当函数没有返回值,接收值为undefined
				function fn02() {
					console.log("fn02...");
				}
				var b = fn02();
				console.log(b);
				
				console.log("=============");
				
				/*  null类型  */
				var num = 1; // 数值类型
				var flag = true; // 布尔类型
				var str = "Hello"; // 字符串类型
				console.log(typeof num); // number
				console.log(typeof flag); // boolean
				console.log(typeof str); // string
				
				// 1)使用 typeof 操作符测试 null 返回 object 字符串。
				var aa = null;
				console.log(typeof aa); // object
				
				// ​2)undefined 派生自 null,所以等值比较返回值是 true。未初始化的变量和赋值为 null 的变量相等。
				console.log(undefined == null); // true
				// 只声明未赋值的变量  值为null的变量 相等
				var bb;
				var cc = null;
				console.log(bb == cc); // true
				
				console.log("-----------");
				
				/*  数值型  */
				// 1 和 1.0相等
				console.log(1== 1.0); // true
				// 1 + 1.0 等于 2
				var n = 1 + 1.0; 
				console.log(n); // 2
				// 将浮点型的整数转换成整型 1.0 -> 1
				console.log(1.0);
				
				
				console.log('==============');
				
				/* 字符串类型  */
				// 1. 使用''或""引起来
				var s1 = 'Hello';
				var s2 = "World";
				console.log(s1,s2);
				// 	2. 可以使用"+"对字符串进行拼接
				console.log(s1+ s2);
				
				
			
		</script>

五、类型转换

5.1 自动类型转换

​ 1、转字符串:所有的值转字符串都是加引号

​ 2、转boolean型:有值为true,无值为false(0为false,非0为true)

​ 3、转数值型:空值为0,非空的数值型字符串能转换,非数值型字符串转换为NaN

5.2 函数转换

​ parseInt() 转整数型

​ parseFloat() 转浮点型

​ 注: 转换时会从值的第零个位置开始找有效数字,直到找到无效数字为止,parseFloat在转换时会比parseInt多识别一个小数点。

5.3 显示转换

toString() 将值转换成字符串

toFixed() 保留指定小数位 , 四舍五入(需要大于5 ,5的话不会进一)

注:值不能为NULL

JS 为Number、Boolean、String 对象提供了构造方法,用于强制转换数据类型,转换的是值的全部,不是部分。

注:可以住转换null值

5.3.1 比较运算符

== 比较值

​ 1==“1” true

=== 比较值和类型

​ 1===“1” false

 <script type="text/javascript">
			 // parseInt
		 	console.log(parseInt("123abc")); // 123
			console.log(parseInt("abc123")); // NaN
			console.log(parseInt("123.4abc")); // 123
			console.log(parseInt("123")); // 1234
			console.log("123");
			
			var a = 1;
			var b = "2";
			console.log(a+b); // 12
			console.log(a + parseInt(b));
			
			// parseFloat
			console.log(parseFloat("123abc")); // 123
			console.log(parseFloat("abc123")); // NaN
			console.log(parseFloat("123.4abc")); // 123.4
			console.log(parseFloat("123")); // 1234
			console.log(parseFloat("123.4.5")); // 123.4
			
			console.log("----------");
			// toString()
			var aa = 10;
			console.log(aa);
			console.log(aa.toString());
			var bb = null; // 空值
			// console.log(bb.toString()); // Cannot read property 'toString' of null
			
			// toFixed()
			var cc = 1.346;
			console.log(cc.toFixed(2)); // 保留两位,四舍五入
			
			console.log("----------");
			// Number
			var q = "1";
			var w = "a";
			var e = "123abc"
			var r = "123.4";
			var t = "123.4.5";
			console.log(Number(q));
			console.log(Number(w));
			console.log(Number(e));
			console.log(Number(r));
			console.log(Number(t));
			
			// Boolean
			console.log(Boolean("a")); // true
			console.log(Boolean(0)); // false
			console.log(Boolean("1")); // true
			console.log(Boolean(null)); // false
			
			// String
			console.log(10);
			console.log(String(10));
			console.log(null);
			console.log(String(null));
			
			console.log("==========");
			
			// == 
			console.log(1=='1');
			// ===
			console.log(1==='1');
			
			
		 </script>

六、数组

6.1 数组的定义

​ 1、隐式定义

​ var 数组名 = [ ];//空数组

​ var 数组名 = [值1,值2,值3…] ;

​ 2、直接实例化

​ var 数组名 =new Array(值1,值2,值3…);

​ 3、定义数组并设置长度

​ var 数组名 = new Array(size);

6.2 数组的操作

​ 数组的下标是从0开始的(不会出现下标越界)

​ 获取数组指定下标的值:(如果下表不存在,则undefined)

​ 数组名 [下标];

​ 设置数组指定下表的值:(如果下标不存在,就自动扩容)

​ 数组名[下标] = 值;

​ 获取数组的长度

​ 数组名.length;

​ 设置数组的长度:

​ 数组名.length = 值;

​ 扩展:

​ 如果设置非整形的下标,则会成为数组的属性,不计入数组的长度

​ 设置属性:

​ 数组名. 属性名 = 值;

​ 数组名[“属性名”] = 值;

​ 获取属性 :

​ 数组名.属性名;

​ 数组名[“属性名”];

6.3 数组的遍历

6.3.1 for循环遍历

​ for (var index = 0 ; index <数组长度;index++ ) {

​ }

​ 相当于java中:

​ for (int index = 0;index <数组长度; index ++) {

​ }

6.3.2 for …in 循环

​ for (var 下标名 in 数组) {

​ }

6.3.3 forEach循环

数组.forEach(function(element,index){
						// element:元素
						// index:下标
					});

注:
for --> 不遍历属性
foreach --> 不遍历属性和索引中的undefined
for in --> 不遍历索引中的undefined

6.4、数组提供的方法

​ push 添加元素到最后

​ indexof 数组元素索引

​ join 数组转成字符串

​ split 属于字符串方法:将字符串转换成数组

​ unshift 添加元素到最前

​ pop 删除最后一项

​ shift 删除第一项

​ reverse 数组翻转

​ slice 截取(切片)数组,原数组不发生变化

​ splice 剪接数组,原数组变化,可以实现前后删除效果

​ concat 数组合并

<script type="text/javascript">
		 	/* 数组的定义  */
			// 隐式定义
			var arr1 = [];
			console.log(arr1);
			var arr2 = [1,2,'a',true];
			console.log(arr2);
			
			// 直接实例化
			var arr3 = new Array(1,2,3);
			console.log(arr3);
			
			// 定义数组并设置长度
			var arr4 = new Array(5);
			console.log(arr4);
			
			
			console.log("============");
			/*  数组的操作  */
			// 获取指定下标的值
			console.log(arr2[1]); // 2
			// 如果下标不存在
			console.log(arr2[10]); // undefined
			// 设置指定下标的值
			arr2[1] = 20;
			console.log(arr2);
			// 如果下标不存在
			arr2[10] = 100;
			console.log(arr2);
			// 获取数组的长度
			console.log(arr3.length); // 3
			// 设置数组的长度
			arr3.length = 5;
			console.log(arr3);		
			// 设置数组的属性
			arr3.name = "zhangsan";
			console.log(arr3);	
			arr3["pwd"] = "123456";
			console.log(arr3);	
			// 获取数组的属性
			console.log(arr3["name"]);
			
			
			
			console.log("============");
			/*  数组的遍历  */
			console.log(arr3);
			console.log("---for循环遍历----");
			// for循环遍历
			for(var i = 0; i < arr3.length; i++) {
				console.log("下标:" + i + ",值:"+ arr3[i]);
			}
			// for...in
			console.log("---for...in----");
			for (var i in arr3) {
				console.log("下标:" + i + ",值:"+ arr3[i]);
			}
			// forEach
			console.log("---forEach----");
			arr3.forEach(function(element, index){
				console.log("下标:" + index + ",值:"+ element);
			});
			
			
			console.log("============");
			/* 数组提供的方法  */
			var arr5 = ["a","b","c"];
			// push          添加元素到最后 
			arr5[arr5.length] = "d";
			arr5.push("e");
			console.log(arr5);
			// indexOf       数组元素索引 
			console.log(arr5.indexOf("a"));  // 0
			console.log(arr5.indexOf("t"));  // -1,找不到返回-1
			// join          数组转成字符串
			console.log(arr5.join("-")); // a,b,c,d,e
			// split 		  字符串方法:将字符串转换成数组
			var str = "1,2,3,4,5";
			console.log(str.split(","));
			
			
			
		 </script>

七、函数的定义

7.1、函数的定义

​ 1、函数声明的语句

1、函数声明的语句
				function 函数名([参数列表]) {
					
				}

2. 函数定义表达式
				var 变量名/函数名 = function([参数列表]) {
					
				}
3. Function构造函数 (了解)
					var 函数名 = new FUnction([参数列表],函数体);

7.2、函数的参数

定义函数时设置形参,调用函数时传递实参。
			1. 实参可以省略,则形参为undefinded
			2. 如果形参名相同,则以最后一个参数为准
			3. 可以设置参数的默认值
			4. 参数为值传递,传递副本;参数是是引用传递,则传递的是地址,操作的是同一个对象

7.3、函数的调用

函数的调用
			1. 常用调用模式
				函数名([参数列表]);
			2. 函数调用模式 (函数有返回值)
				var 变量名 = 函数名([参数列表]);
			3. 方法调用模式
				对象.函数名([参数列表]);

7.4、函数的返回值

函数的返回值
				return
					1. 在没有返回值的方法中,用来结束方法。(如果方法没有返回值,使用return,返回的是undefinded)
					2. 有返回值的方法中,一个是用来结束方法,一个是将值带给调用者。

7.5、函数的作用域

函数的作用域
				在JS中,只有在函数中才作用域。
				1. 在函数中,存在局部变量和全局变量
				2. 在函数中,如果声明变量时未使用var修饰符,则该变量是全局变量
 <script type="text/javascript">
		 	/* 函数的定义 */
		    // 1. 函数声明语句
			function fn01(a,b) {
				console.log(a+b);
			}
			console.log(fn01);
			// 2. 函数定义表达式
			var fn02 = function(a,b) {
				console.log(a+b);
			}
			console.log(fn02);
			// 3. Function构造函数
			var fn03 = new Function('a','b','return (a+b);');
			console.log(fn03);
			// 相当于
			function fn04(a,b) {
				return (a + b);
			}
			
			
			console.log("==============");
			/*  函数的参数  */
			// 1. 实参可以省略,则形参为undefinded
			function test01(x, y) {
				console.log(x+y);
			}
			// 调用函数
			// 未设置实参
			test01(); // NaN
			test01(1); // NaN
			test01(1,2); // 3
			// 2. 如果形参名相同,则以最后一个参数为准
			function test02(x,x) {
				console.log(x);
			}
			test02(1,2); // 2
			// 3. 可以设置参数的默认值
			function test03(x) {
				// 如果形参x有值,则值为x传递的值;否则值为"x"
				x = x || "x";
				console.log(x);
			}
			test03(10); // 10
			test03(); // x
			function test04(x) {
				(x != null && x != undefined) ? x = x : x = "x";
				console.log(x);
			}
			test04(); // x
			test04("Hello");
			
			
			// 4. 参数为值传递,传递副本;参数是是引用传递,则传递的是地址,操作的是同一个对象
			// 值传递
			var num = 10; // 变量
			// 函数
			function test05(num) {
				num = 20;
			}	
			// 调用函数
			test05(num); // 实参是定义的变量
			console.log(num);
			
			
			// 引用传递
			var obj = {name:"zhangsan"};
			console.log(obj);
			function test06(o) {
				o.name = "lisi";
			}
			test06(obj);
			console.log(obj);
			
			
			console.log("===============");
			/*  函数的调用  */
			// 常用调用模式
			function f1() {
				console.log("常用调用模式...");
			}
			f1();
			// 函数调用模式
			var f2 = function(a) {
				console.log("函数调用模式...");
				return a;
			}
			var num1 = f2(1);
			console.log(num1);
			// 方法调用模式
			// 定义对象   key键:字符串   value值:任意数据类型
			var obj = {
				name:"zhangsan", // 字符串
				age:18, // 数值
				sex:true, // 布尔
				cats:["大毛","二毛"], // 数组
				dog:{ // 对象
					name:"张二狗",
					age:1
				},
				sayHello:function(){ // 函数
					console.log("你好呀~");
				}
			}
			console.log(obj);
			console.log(obj.dog);
			console.log(obj.sayHello); 
			obj.sayHello(); // 对象调用函数
			
			
			console.log("===============");
			/* 函数的返回值 */
			function a1(){
				console.log("没有返回值...");
				return;
				console.log('........');
			}
			console.log(a1());
			
			function a2() {
				console.log("有返回值...");
				return "test";
				
			}
			console.log(a2());
			
			console.log("===============");
			/* 函数的作用域  */
			var pp = "Hello"; // 全局变量
			// 函数中定义的变量是局部变量
			function qq() {
				// 局部变量
				var box = 10;
				// 全局变量 (没有使用var修饰符声明,属于全局变量)
				box2 = 20;
			}
			// 调用方法,执行方法中的代码
			qq();
			console.log(pp); // 全局变量
			console.log(box); // box是局部变量
			console.log(box2); // 20
			
			
			
			
		 </script>

八、内置对象

8.1、String

​ ◦ charAt(idx) 返回指定位置处的字符
​ ◦ indexOf(Chr) 返回指定子字符串的位置,从左到右。找不到返回-1
​ ◦ substr(m,n) 返回给定字符串中从m位置开始,取n个字符,如果参数n省略,则意味着取到字符串末尾。
​ ◦ substring(m,n) 返回给定字符串中从m位置开始,到n位置结束,如果参数n省略,则意味着取到字符串末尾。
​ ◦ toLowerCase() 将字符串中的字符全部转化成小写。
​ ◦ toUpperCase() 将字符串中的字符全部转化成大写。
​ ◦ length 属性,不是方法,返回字符串的长度。

8.2、Math

​ ◦ Math.random() 随机数
​ ◦ Math.ceil() 向上取整,大于最大整数
​ ◦ Math.floor() 向小取整,小于最小整数String

8.3、Date

获取日期
◦ getFullYear() 年
◦ getMonth() 月
◦ getDate() 日
◦ getHours() 时
◦ getMinutes() 分
◦ getSeconds() 秒
设置日期
◦ setYear()
◦ setMonth()
◦ setDate()
◦ setHours()
◦ setMinutes()
◦ setSeconds()
◦ toLoacaleString() 转换成本地时间字符串

<script type="text/javascript">
		 	var str = "Hello World";
			console.log(str);
			console.log(str.substring(3)); // 从下标3开始,截取到最后
			console.log(str.substring(3,5)); // 从下标3开始,到下标5结束
			
			console.log(str.toLowerCase()); // 转小写
			console.log(str.toUpperCase()); // 转大写
			
			
			// ◦ Math.random()	   随机数
			console.log(Math.random());
			//	◦ Math.ceil() 	   向上取整,大于最大整数
			console.log(Math.ceil(1.2));
			//	◦ Math.floor() 	   向小取整,小于最小整数String 
			console.log(Math.floor(1.2));
			
			
			// 得到日期对象
			var date = new Date();
			console.log(date);
			// ◦ getFullYear()	   年
			console.log(date.getFullYear());
			//	◦ getMonth()	   月
			console.log(date.getMonth() +1); // 0~11
			//	◦ getDate()		   日
			console.log(date.getDate());
			//	◦ getHours()	   时
			console.log(date.getHours());
			//	◦ getMinutes()	   分
			console.log(date.getMinutes());
			// 	◦ getSeconds()	   秒
			console.log(date.getSeconds());
			var mstr = date.getMinutes() < 10 ? "0"+date.getMinutes() : date.getMinutes();
			var dateStr = date.getFullYear()+"-"+(date.getMonth() +1) + "-" + date.getDate()+" " + date.getHours()+":"+ mstr;
			console.log(dateStr);
			// 时间本地化
			console.log(date.toLocaleString())
			
			
		 </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值