js05

  1. for与逗号:
<script>
	//听逗号后面的j的
//	for (var i=0,j=0;i<10,j<5;i++,j++) {
//		console.log(i,j);
//	}
	//0 0
	//1 1
	//2 2
	//3 3
	//4 4
	for (var i=0,j=0;i<5,j<10;i++,j++) {
		console.log(i,j);
	}
	//0 0
	//
	//
	//
	//
	//
	//
</script>
  1. while循环:
    <p> 假设某人有100,000现金。 每经过一次路口需要进行一次交费。交费规则为: 当他现金大于50,000时每次需要交5%; 如果现金小于等于50,000时每次交5,000。 请写一程序计算此人可以经过多少次这个路口。 </p> <script type="text/javascript"> var count=100000,time=0; while(count>5000){ time++; if(count>50000){ count-=count*0.05; }else{ count-=5000; } } document.write("<br>总共经过"+time+"次");//23 document.write(还剩下${count}元); // **while 和 do/while 的区别 : do/while至少会执行一遍** </script>
  2. 对象Object循环
<script type="text/javascript">
			var obj={
				name:"张世杰",
				age:24
			}
			document.write(obj);
			var x;
			//for……in   遍历对象的属性(可枚举属性)
			for(x in obj){
				document.write(`<br>${x} : ${obj[x]}<br>`);
			}
		</script>
  1. continue 和 break
<script type="text/javascript">
	// continue 放到循环语句的代码块里;遇到该关键词停止本次循环,代码块不再往下执行
	// break    放到switch+循环语句的代码块里;遇到该关键词立即停止整个循环体和switch
	var sum=0
	for (var i = 0; i < 10; i++) {
		if(i==5){
			continue;
			console.log(i);
		}
		sum+=i;
	}
	console.log(sum);
	
	var a = 0;
	forhere:
	for (var i = 0; i < 10; i++) {
	   for (var j = 0; j < 10; j++) {
		   if(j == 5){
				 // continue forhere;
				 break forhere;
				//体会continue后面加和不加语句标签的区别;
				//体会break后面加和不加语句标签的区别;
		   }
		   a++;
		}
	}
	console.log(a);
	
	cars=["BMW","Volvo","Saab","Ford"];
	list:{
		document.write(cars[0] + "<br>"); 
		document.write(cars[1] + "<br>"); 
		document.write(cars[2] + "<br>"); 
		break list;
		document.write(cars[3] + "<br>"); 
		document.write(cars[4] + "<br>"); 
		document.write(cars[5] + "<br>"); 
	}
</script>
  1. return
<script type="text/javascript">
//return 只能放在函数里边
//遇到该关键词停止该函数往下执行
var a=0;
function myTest(){
	var arr=[1,2,3,4,5,6,7];
	for(var i=0;i<arr.length;i++){
		if(arr[i]===4){
			return "该数组存在 4 这个元素";
		}
		a++;
		console.log(i);
	}
}
console.log(myTest(),a);
</script>

6.throw catch with了解

<script type="text/javascript">
			// "use strict";
// 			throw new Error('请输入数字,HOHO');
// 			function factorial (n) {
// 				if(isNaN(n)) throw new Error('请输入数字,HOHO');
// 				if(n == 1) return 1;
// 				return n*factorial(n-1);//递归
// 			}
// 			var n = factorial(3);//3*factorial(2)--3*2*factorial(1)--3*2*1
// 			console.log(n);//6
// 
// 			var n = factorial('a05');
// 			console.log(typeof n);//n 是一个错误对象
// 
// 			var n = factorial(5);
// 			console.log(n);
			
			// var a = 90;
			try{
				console.log(a);
			}
			catch(e){
				console.log(e.name); //返回错误类型
				console.log(e.message); //错误描述
			}
			finally{
				console.log('大会到此结束');
			}
			var obj={
				name:"abc",
				age:24
			}
			
			with(obj){
				console.log(name)
			}
		</script>

7.对象创建方法1

<script type="text/javascript">
			//var obj={}   var obj=new Object;
			//1\ 工厂模式:函数封装
			function createStu(name,age,js1,hello){
				var stu={};//2.函数内var新对象
				stu.name=name;
				stu.age=age;
				stu.hello=hello;
				stu.js1=js1;
				
				return stu;//3.手动return
			}
			
			var stu1=createStu("陈晨",18,89,function(){alert("你好")});
			var stu2=createStu("name",19,90,function(){alert("hello")});

			//2\ 构造函数方式,用new 调用函数的执行过程:
			// 首先,向内存申请一片空间,让this 指向这片空间
			// 然后,由构造函数向这片空间添加属性和对应的属性值
			// 最后,函数返回 this
			function CreateStu(name,age,js1){
				// var this={};
				this.name=name;
				this.age=age;
				this.js1=js1;
				this.sayName=function(){
					console.log(this.name);
				}
				//return this;
			}
			var stu3=new CreateStu("方彦舒",18,90);
			stu3.sayName();
			
			var stu4=new CreateStu("王福君",18,88);
			stu4.sayName();
			
			var stu5=new CreateStu;
			console.log(stu5);
			
			//3\ Object.create()创建对象,参数只能是引用类型或null
			var b = Object.create(new Array(14,5,6,2,3,7));
			console.log(b.length);
			var c = b.sort();
			console.log(c);//[14,2,3,5,6,7]
			console.log(c.slice(2, 3));//3

			var nu = Object.create(new String('null'));
			console.log(nu[2]);//l

			var nu = Object.create(null);
			console.log(nu[2]);
		</script>

8.valueOf toString

<script type="text/javascript">
			// 所有的引用类型(对象+包装对象)都具有valueOf toString方法
			valueOf():对象调用valueOf --->对象本身
					  包装对象调用valueOf --->原始类型
			
			
			toString:函数调用toString--->函数体
					 Object对象调用toString--->"object Object"
					 数组调用toString--->去掉数组里所有的中括号,每个元素用逗号分隔
					 时间对象调用toString--->表示当前时间的字符串
					 错误对象调用toString--->描述错误的字符串
					 string number boolean--->引号引起来的字符串
		</script>

9.对象属性的增删改查

<script type="text/javascript">
			var obj={
				name:"李旭",
				age:18
			}
			// 查
			obj.name="万童"//改
			obj['name']
			
			//增
			obj.sayHello=function(){
				console.log("111111111111111")
			}
			
			//删
			//用var 或function 声明的变量(函数),delete操作结果为false
			console.log(delete obj);//false
			
			console.log(delete obj.name);//true 
			console.log(obj.name);//undefined
			//删除对象没有的属性,结果是true
			console.log(delete obj.sayHello);//true
			
			//检测属性
			//in :只要对象有这个属性包括继承来的属性,返回结果为true
			var person = {name:'yourname', age:10};
			Object.defineProperty(person, "sex", {
						value: "male",
						enumerable: false
			});
			console.log('name' in person);     
			console.log('sex' in person);
			console.log('toString' in person); 
			
			var person = {name:'yourname', age:10};
			person.__proto__.LastName = "deng";//让person 继承属性LastName
			Object.defineProperty(person, "sex", {
						value: "male",
						enumerable: false	//不可枚举
			});
			for(var prop in person){
			  console.log(prop+'='+person[prop]+'  ;');
			}
			//删除没有的属性为true
			//存取器属性,让对象的某一个属性有两种:存和取
			var myobj = {
				//数据属性
				myname:'yourname',
				birthday:'1983-05-17',
				get myage(){
					return (new Date().getFullYear()) - new Date(this.birthday).getFullYear();
				},
				set myage(value){
					this.birthday = value;
				}
			};
			myobj.myage = '1998-08-22';
			console.log(myobj.myage);
		</script>

10.JSON.stringify

<script type="text/javascript">
			// JSON.stringify,将对象转成字符串
			var hqyj = {name:'华清远见',add:'科华北路99',tel:['0900', 8304, '0910']};
			var str = JSON.stringify(hqyj);
			document.write(str);
			console.log(typeof str);
			
			// JSON.parse,将JSON 字符串转换成对象
			var obj1 = JSON.parse(str);
			document.write(obj1);
		</script>

11.this指向问题!!!

<script type="text/javascript">
			//1/ 当this 放在函数里的时候,谁调用的函数 this就指向谁
			// var obj={
			// 	name:"abc",
			// 	age:100,
			// 	say:function(){
			// 		return this.age;
			// 	}
			// }
			// console.log(window.obj.say())
			
// 			 function fn(num) {
// 				 //var this={}
// 				 console.log( "fn: " + num );
// 				 // count用于记录fn的被调用次数
// 				 console.log(this.count);
// 				 this.count++;
// 				 //return this;
// 			 }
// 			 fn.count = 0;
// 			 var i;
// 			 for (i=0; i<7; i++) {
// 				 if (i > 5) {
// 					 window.fn( i );
// 				 }
// 			 }
// 
// 			 console.log(count);  
// 			 console.log( fn.count );
			
			//2\ new 操作符调用函数,this 指向实例对象
			// function myFn(){
			// 	//var this={}
			// 	var test=300;
			// 	this.test=400;
			// 	console.log(test);//300
			// 	console.log(this.test);//400
			// 	//return this;//{test:400}
			// }
			// myFn.test=100;
			// var test=200;
			// 
			// console.log(myFn.test);//100
			// console.log(test);//200
			// 
			// var myFn=new myFn;
			// var myFn1=new myFn;
			// console.log(myFn.test)//400
			
			function creatObj(name){
				//var this={};
				this.name=name;
				this.sayName=function(){
					console.log(this.name)
				}
				//return this;
			}
			
			var obj1=new creatObj("马杰");
			// obj1={
			// 	name:"马杰",
			// 	sayName:function(){
			// 		console.log(this.name)
			// 	}
			// }
			obj1.sayName();
			var obj2=new creatObj("马杰");
			obj2.sayName();
			console.log(obj1==obj2)
		</script>

12.call apply

<script type="text/javascript">
			var test=10000;
			var obj={
				test:100
			}
			function fn(a,b){
				console.log(a+b)
				console.log(this.test);
			}
			
			//函数的call 和 apply ,用来改变函数里this 的指向的
			//call  可以传入多个参数,第一个用于改变函数内this 的指向,第二第三分别是函数的实参
			//apply 最多可以接收2个,第一个用于改变函数内this 的指向,第二个必须是数组
			fn.call(obj,1,2);
			fn.apply(obj,[1],2);
		</script>

习题
答案:45在这里插入图片描述
答案:40
在这里插入图片描述
return(笔试考题常用):

在这里插入图片描述

抛出错误:
在这里插入图片描述
在这里插入图片描述

优先级
在这里插入图片描述

经典练习题在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值