- 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>
- 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>
- 对象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>
- 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>
- 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(笔试考题常用):
抛出错误:
优先级
经典练习题