豚鼠学习JS第三周
一、
1.运算符的优先级
- 逗号运算符声明多个变量
如:var a=1, b=2; - 优先级高先算
一样高从走往右算,与大于或 - 遇到优先级的不清楚的可以用括号括起来
2.代码块
- 程序是一条一条语句构成的,语句是至上而下完成的,js中用{}进行分组,要么都执行要不都不执行。
- 代码块后面不用加;,只有分组的作用,代码快的内容是制作外部是完全可见的
3.if语句
- 通过流程控制语句可以选择条件执行
- 语句分类
1.条件判断语句
2.条件分支语句
3.循环语句
符合条件判断才会执行
求值为true则执行,false则不执行 - 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a =1 ,n=10;
if(a>1)
{alert ("啊👆");
}alert("啊↑?")
if(n>1)
{
if(n>10)
{
alert("4");
}
else if(n>8);
{ alert("10")}
}
</script>
</head>
<body>
</body>
</html>
3.if练习
- 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a=prompt("吃皮带炖猪肉(1~100)");
if(a>100||a<80){
alert("看不懂中文?")
}
else if(a==100){
alert("大嘴巴子");
}
else if(a>=80){
alert("吃千年杀");
}
</script>
</head>
<body>
</body>
</html>
- 最好添加非法判断
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a=prompt("吃皮带炖猪肉(1~100)");
if(a>100||a<80){
alert("看不懂中文?")
}
else if(a==100){
alert("大嘴巴子");
}
else if(a>=80){
alert("吃千年杀");
}
</script>
</head>
<body>
</body>
</html>
4.if练习二
- 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a,b,c;
a=prompt("身高");
b=prompt("资产");
c=prompt("颜值");
if(a>100,b>1000,c>500){
alert("嫁");
}
else if(a>100||b>1000||c>500)
{
alert("嫁");
}
else{alert("真窝囊")}
</script>
</head>
<body>
</body>
</html>
输入100 1000 500
5.条件分支语句
-
switch(条件表达式)
case 表达式
后接break;结束判断 -
执行时会一次将case后的表达式的值和switch后的条件表达式的值进行全等比较,比较结果为true则执行此处代码,如果结果为假则继续比较
-
break用来退出语句
-
实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a ;
a=prompt("shuru");
switch(a){
case 1:
alert(1);
break;
case 3:
alert(1);
break;
case 4:
alert(1);
break;
default:
alert("null")
}
</script>
</head>
<body>
</body>
</html>
6.switch练习
- 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a;
a=prompt("shjuru");
switch(a)
{case a>60:
alert("及格")
default:
alert("不及格")
}
</script>
</head>
<body>
</body>
</html>
7.while 语句
- while(条件表达式){}
先对表达式进行求值判断
执行完毕表达式值为true再做判断
直到值为faluse
创建一个循环往往需要三个步骤
1.初始化一个变量
2.在循环中设置一个表达式的值
3.定义一个表达式,没吃更新初始化变量
do while循环
先执行do的语句再进行判断
两语句类似,不同的是循环体的先后执行
do可以保证至少执行一次
利用while可重置循环,在用户输入错误的情况下可以重新输入 - 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a=1000,b=0;
while(a<=5000)
{
a*=1.05;
b++;
}
console.log(b);
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
while(1){
var a=prompt("输入");
if(a>0&&a<100){
break;
}
else{alert("请输入正确的值")}
}
</script>
</head>
<body>
</body>
</html>
34.for循环
- for语句,也是一个循环语句,也称为for循环
在for循环中,为我们提供了专门的位置来放三个表达式
for(初始化表达式;条件表达式;更新表达式)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
for(var b=0,a=1;a<101;a=a+2)
{
b+=a;
}
alert(b);
</script>
</head>
<body>
</body>
</html>
8.for练习
- 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
for(var a=7,b=0,c=0;a<105;a=a+7)
{
b+=a;
c++;
}
alert(c)
alert(b)
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
for(var a=100;a<1000;)
{
if(a=(a%100)^3+(a%10-(a%100)*10)^2+(a-100*(a%100)-10*(a%10-(a%100)*10)))
{
console.log(a);
}
else{
a++;
}
}
</script>
</head>
<body>
</body>
</html>
9.质数练习
- 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a;
a=prompt("请输入一个大于一的数");
if(a<1){
alert("请输入正确数子");
}
else{
for(var b=2;b<a;b++)
{
if(a%b==0){
alert("不是质数")
}
}
alert("是一个质数")
}
</script>
</head>
<body>
</body>
</html>
11.质数练习的改进
- 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var times;
console.time(times);
for(var a=2 ;a<=100;a++)
{
var c=true;
for( var b=2 ;b<=Math.sqrt(a);b++)
{
if(a%b==0){
c=false;
}
}
if(c)
{
document.write(a+"<br/>");
}
}
console.timeEnd(times);
</script>
</head>
<body>
</body>
</html>
12.练习
- 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
for(var a=1;a<9;a++)
{
for(var b=1;b<=a;b++)
{
document.write(a+"*"+b+"="+a*b+" ");
}
document.write("<br/>");
}
</script>
</head>
<body>
</body>
</html>
- 可以使用css添加属性让其对齐
12.打印质数
- 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
for(var a=2 ;a<=100;a++)
{
var c=true;
for( var b=2 ;b<a;b++)
{
if(a%b==0){
c=false;
}
}
if(c)
{
document.write(a+"<br/>");
}
}
</script>
</head>
<body>
</body>
</html>
- 注意变量位置
- 如果变量协助外面不参与循环,变量的值会被修改
13.break和continue
if语句不能用break,但可以对for起作用
break会立即终止离他最近的那个循环语句
可以为循环语句创建一个label,来标识当前的循环
- 如;lable:循环语句,其它名字也行
- 使用break语句时,可以在break后跟着一个label,这样break将会结束指定的循环,而不是最近的循环
-
- 如:break:lable
continue是关键字可以用来跳过当次循环
同样对最近的循环执行
直接写相当于break
console.time()可以开始一个计时器
需要一个字符串作为计时器标识
console.timeEnd()
- 如:break:lable
- 对性能提升很大
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var times;
console.time(times);
for(var a=2 ;a<=100;a++)
{
var c=true;
for( var b=2 ;b<=Math.sqrt(a);b++)
{
if(a%b==0){
c=false;
}
}
if(c)
{
document.write(a+"<br/>");
}
}
console.timeEnd(times);
</script>
</head>
<body>
</body>
</html>
14.对象的简介
不属于5种基本数据类型都是对象
基本数据类型都是单一值,值和值之间没有任何的联系
基本数据类型都是单一值,值和值之间没有任何的联系
对象属于一种复合的数据类型,在对象中可以保存多个不同的数据类型
- 对象的分类
1.内建对象
由es标准中定义的对象,在任何的es的实现中都可以使用
2.宿主对象
由js运行环境提供的对象
目前来讲主要指由浏览器提供的对象
比如bom dom
3.自建对象
由开发人员创建的对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var duixiang= new Object();
duixiang.shuxing="一串汉字";
alert(duixiang.shuxing);
</script>
</head>
<body>
</body>
</html>
15.对象的基本操作
var a= new object()
使用new关键字调用的函数,是构造函数constructor
构造函数是专门用来创建对象的函数
typeof 检查对象时,会返回object
向对象中保存的值称为属性值
语法:对象.属性名=属性值
obj.name=“孙悟空”
读取对象中的属性
语法:对象.属性名
读取对象没有属性会返回underfined
修改对象的属性值
语法:对象.属性名=新值
删除对象属性
16.属性名和属性值
属性名不强制要求遵守标识符规范
什么乱七八糟的名字都可以使用
使用时尽量按照标识符规范去做
如果需要使用特殊的属性名,能采用.的方式来操作
需要使用另一种方式
- 语法对象【“属性名”】=属性值
使用[]这种方式操作属性更加灵活,在【】中可以直接传递一个变量,这样变量值是多少就会读取那个属性 - js的属性值可以是任意类型
甚至也可以是一个对象 - in运算符,通过该运算符可以直接检查一个对象中是否有指定的属性,如果有则返回true没有返回false
语法:"属性名"in对象
console.log(”test2“in obj) - 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a={};
a["!#@$%^^&"]="锄禾日当午";
document.write(a["!#@$%^^&"]);
b=a;
document.write(b["!#@$%^^&"]);
</script>
</head>
<body>
</body>
</html>
17.基本数据类型和引用数据类型
js中的变量保存到栈内存中
基本数据类型的值直接在栈内存中存储
变量间数值相互独立
对象保存在堆内存中
没创建一个新的对象,就会在堆内存中开辟出一个新的空间
而变量保存的是地址
var obj2=obj地址相同
修改地址对应的东西则都改变- 比较两个基本数据类型时,比较值,两个引用比较,比较地址
18.对象字面量
- {}=new object()
使用对象字面量,可以在创建对象时,直接指定对象中的属性
语法:{属性名:属性值,属性名:属性值}
var obj2={name:抓捕接,age:5000岁}
对象字面量的属性名可以加引号可以加,也可以不加
属性名和属性值是一组一组的名值对结构,如果一个属性之后没有其它属性,不要写 - 实操效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a={name:"小飞侠",
age:1888,
b:{class:"新的对象"}
};
alert(a.b.class)
</script>
</head>
<body>
</body>
</html>