web大前端之旅Ⅶ

运算符优先级

越靠上优先级越高,优先计算
若优先级一样,则从左往右计算
在这里插入图片描述
若优先级不清楚,可使用()来改变运算符优先级

语句

语句是一个程序的基本单位,JavaScript的程序就是由一条一条语句构成的,按照自上而下的顺序一条一条执行的,在JS中可以使用{}为语句进行分组
同一个{}中的语句称为一组语句,也称为代码块
注:代码块只具有分组的功能,没有其他的用途

{
    var a = 6;
    a--;
    console.log(a);
}

流程控制语句

条件判断语句

判断指定表达式的值来决定执行还是跳过某些语句,最基本的条件语句:

if…else

语法一:

if(true){
    alert("干饭!!");
}

语法二:

if(true){
    alert("干饭!!");
}else{
    alert("学习!!");
}

语法三:

if(1){
    alert("干饭!!");
}else if(2){
    alert("摸鱼!!");
}else{
    alert("干饭!!");
}

if语句练习

// 从键盘输入小明的期末成绩:
// 当成绩为100时,'奖励一辆BMW'
// 当成绩为[80-99]时,'奖励一台iphone15s当成绩为[60-80]时,'奖励一本参考书'其他时,什么奖励也没有
var score = prompt("请输入小明的期末成绩");
if(score<0 || score<100 ||isNaN(score)){
    alert("请输入正确的分数!");
}else{
    if(score == 100){
        alert("奖励一辆BMW");
    }else if(score>=80 && score<=99){
        alert("奖励一台iPhone15s")
    }else if(score>=60 && score<=80){
        alert("奖励一本参考书")
    }else{
        alert(Null);
    }
}

条件分支语句

switch…case

语法:

switch(条件表达式){
    case 1:
        语句
        break;
    case 2:
        语句
        break;
    case 3:
        语句
        break;
    default:
        语句
        break;
}

case后表达式的值和switch后条件表达式的值进行全等比较
如果比较结果为true,从当前case处开始执行代码
如果比较结果为false,则继续向下比较
如果所有比较结果都为false,则只执行default后的语句

switch语句练习

// 对于成绩大于60分的,输出"合格"。低于60分的,输出"不合格"
var score = prompt("请输入成绩");
if(score<0 || score>100){
    alert("请输入正确的成绩")
}else{
    switch(true){
        case score>=60:
            alert("合格");
        break;
        default:
            alert("不合格");
        break;
    }
}

循环语句

通过循环语句可以反复执行一段代码多次
while
语法:

while(条件表达式){
    语句...
}

while语句在执行时,
先对条件表达式进行求值判断,
如果值为true,则执行循环体,
循环体执行完毕以后,继续对表达式进行判断如果为true,则继续执行循环体,以此类推如果值为false,则终止循环

var n = 1;
while(true){
    alert(n++);
}

像这种将条件表达式写死为true的循环,叫做死循环//该循环不会停止,除非浏览器关闭,死循环在开发中慎用

例子
输出1-10

var i = 1; //初始化一个变量
while (i <= 10) {
    console.log(i); //在循环中设置一个条件表达式
    i++; //定义一个更新表达式,每次更新初始化变量
}

do…while

do{
    语句...
}while(条件表达式);

do…while语句在执行时,会先执行循环体,
循环体执行完毕以后,在对while后的条件表达式进行判断,
如果结果为true,则继续执行循环体,执行完毕继续判断以此类推如果
结果为false,则终止循环
例子
输出1-10

var i = 1;//初始化一个变量
do {
    console.log(i);
    i++;//定义一个更新表达式,每次更新初始化变量
} while (i <= 10);//在循环中设置一个条件表达式

while与do…while的区别

while先判断后执行

do...while先执行后判断

for
for语句也是循环控制语句,称它为for循环

语法:

for(初始化表达式 ; 条件表达式 ; 更新表达式){
    语句...
}

例子
输出1-10

for(i = 0;i<= 10;i ++){
    console.log(i);
}

for循环执行流程:

  1. 执行初始化表达式,初始化变量
  2. 执行条件表达式,判断是否执行循环
  3. 如果为true,则执行循环
    如果为false,终止循环
  4. 执行更新表达式,更新表达式执行完毕循环重复

for循环三个部分都可以省略(死循环),也可以写在外部

for循环练习

//打印1-100之间奇数和

for(i = 0,sum = 0;i <= 100;i++){
    if(i%2 != 0){
        sum += i;
    }
}
console.log(sum);

在这里插入图片描述

//打印1-100之间所有7的倍数的个数及总和
var count = 0;
var sum = 0;
for(i = 1;i <= 100;i++){
    if(i%7 == 0){
        count++;
        sum += i;
    }
}
console.log(count);
console.log(sum);

在这里插入图片描述

//水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。
//(例如:1^3 + 5^3 + 3^3 = 153),请打印所有的水仙花数
for(i = 100;i< 1000;i++){
    var hundred = parseInt(i/100);
    var ten = parseInt(i/10%10);
    var unit = i%10;
    if(Math.pow(hundred,3)+Math.pow(ten,3)+Math.pow(unit,3) == i){
        console.log(i);
    }
}

在这里插入图片描述
质数练习

// 在页面中接收一个用户输入的数字,并判断该数是否是质数。 
// 质数:只能被1和它自身整除的数,1不是质数也不是合数,质数必须是大于1的自然数。
var n = prompt();
var m = Math.sqrt(n);
if(n > 0){
    if(n == 1){
        alert("不是质数也不是合数");
        var n = prompt();
    } 
    for(var i = 2;i < m;i++){
        if(n%i == 0){
            break;
        }
    } 
        if(i > m){
            alert( n +" is a prime.");
        }else{
            alert( n +" is not a prime.");
        }
}

for循环的嵌套

var n = prompt();
for(i = 1; i <= (n+1)/2; i++){
    for(j =1; j<=(n+1)/2-i;j++){
        document.write(" ");
    }
    for(j = 1; j<= 2*(i - 1)+1;j++){
        document.write("*");
    }
    document.write("</br>");
}

在这里插入图片描述

//打印九九乘法表
for(var i = 1;i <= 9;i++){
    for(var j = 1;j <= i;j++){
        document.write(j+"*"+i+"="+i*j+"&emsp;");
    }
    document.write("</br>");
}

在这里插入图片描述

//质数判断
for(var i = 2;i <= 100;i++){
    var flag = true;
    for(var j = 2;j < i;j++){
        if(i%j == 0){
            flag = false;
        }
    }
    if(flag){
        console.log(i);
    }
}

在这里插入图片描述
break与continue

break:结束最近的一次循环,可以在循环和switch语句中使用。

continue:结束本次循环,执行下一次循环,只能在循环中使用。

可以为循环语句创建一个label,来标识当前的循环

outer:
for(i = 0;i <= 5;i++){
    console.log("外部循环"+i);
    for(j = 0;j <= 5;j++){
        break outer;
        console.log("内部循环"+j);
    }
}

Object对象

对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性

对象的分类:

  1. 内建对象
  • 由ES标准中定义的对象,在任何的ES的实现中都可以使用
  • 比如:Math String Number Boolean Function Object…
  1. 宿主对象
  • 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
  • 比如 BOM DOM
  1. 自定义对象
  • 由开发人员自己创建的对象
var obj = new Object(); //创建一个对象
obj.name = "wdd";
obj.gender = "男";
obj.age = 3; //向对象中添加属性
/*obj.age = 2;*/ //修改对象的属性值
delete obj.gender; //删除对象的属性 
console.log(obj); //读取对象的属性

在这里插入图片描述
注:如果读取对象中没有的属性,不会报错而是会返回undefined

向对象中添加属性

属性名

对象的属性名不强制要求遵守标识符的规范
但尽量按照标识符规范

如果要使用特殊的属性名,不能采用.的方式来操作需要使用另一种方式:

语法:

对象["属性名"]= 属性值

读取时也需要采用这种方式

var obj = new Object();
obj["a"] = 666;
console.log(obj["a"]);

在这里插入图片描述
使用[]这种形式去操作属性,更加的灵活

在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性

var obj = new Object();
obj["a"] = "666";
var n = "a";
console.log(obj[n]);

在这里插入图片描述
属性值
JS对象的属性值,可以是任意数据类型

甚至可以是一个对象

var obj = new Object();
obj["a"] = "666";
var n = "a";
var obj2 = new Object();
obj2.name = "999";
obj.test = obj2;
console.log(obj.test);

在这里插入图片描述
in 运算符
通过该运算符可以检查一个对象中是否含有指定的属性

如果有则返回 true ,没有则返回 false 语法:
“属性名” in 对象

console.log(obj.test2);

检查obj中是否含有test2属性

var obj = new Object();
obj["a"] = "666";
var n = "a";
var obj2 = new Object();
obj2.name = "999";
obj.test = obj2;
console.log(obj.test);
console.log("test2" in obj);

在这里插入图片描述

基本&引用数据类型

JS数据类型
字符串型String
数值型Number
布尔型Boolean
Null型
Undefined型
Object型
引用数据类型
基本数据类型

JS中的变量都是保存到栈内存中的,
基本数据类型的值直接在栈内存中存储,
值与值之间是独立存在,修改一个变量不会影响其他的变量
对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响

var a = 666;
var b = true;
var c = "wawu";
var d = {name: 'wdd', age: 3};

栈内存

变量属性值
d0x000
cwawu
btrue
a666

堆内存




0x000name: ‘wdd’ age: 3

栈的特点:先进后出,后进先出

当比较两个基本数据类型的值时,就是比较值

而比较两个引用数据类型时,它是比较的对象的内存地址

如果两个对象是一摸一样的,但是地址不同,它也会返回false

对象字面量

语法:

var obj = {属性名:属性值,属性名:属性值...};

例子

var obj = {
    name:"wdd",
    gender:"男",
    age:2
};
console.log(obj);

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值