JavaScript语句部分

补充函数

prompt()函数
①prompt()可以弹出一个带有文本框的提示框,用户可以在文本框中输入内容
② 该函数需要一个字符串作为参数,该字符串会作为提示框的提示文字
③ 用户输入的内容作为函数的返回值,此时我们需要定义一个变量接受返回值
如:

    var height=prompt("请输入你的身高:");
    var face=prompt("请输入你的颜值:");
    alert (height+","+face);

④警示框中想输入多项内容时,要在添加的内容前面加+
⑤prompt的返回值类型是string,如果需要对输入的数字进行大小比较,则需要进行强制类型转换,即在prompt前加+
例如:

var number1=+prompt("请输入数字1");
alert (typeof number1);







条件判断语句———if语句

会先对条件表达式进行求值判断,如果是true执行if后的语句,如果false则不执行。
语法①:
if(条件表达式) {执行语句}
语法②:
if(条件表达式1){执行语句} else{执行语句2}
语法③:
if(条件表达式1){执行语句}if else(条件表达式2){执行语句2} else{执行语句3}
使用语法三时,计算机会从上往下判断表达式,并只执行第一个true的代码块,然后直接结束if语句。

条件分支语句——switch…case语句

在执行时会依次将case后的表达式的值和switch后的条件进行比较:
注:分支语句后一定要加break来退出我们的整个switch语句
语法:

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







循环语句

可以反复执行一段代码多次

创建一个循环往往需要三个步骤
①初始化一个变量
var i=0;
②在循环中设置一个条件表达式
while(i<10)
③定义一个更新表达式,每次更新初始化变量
{i++;}

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

  • 语法:
    while(条件表达式) {执行语句}

do… while循环
会先执行循环体,循环体执行完毕后再对while后的条件表达式进行判断,如果是true,则继续循环体,以此类推。如果是结果是false,则终止循环(保证循环体至少执行依次)

  • 语法: do{执行语句;} while(条件表达式)

for循环
for循环中提供了专门的位置放置初始化表达式,条件表达式,更新表达式。其实和while循环一样,不过规范了简洁了。

  • 语法: for(初始化表达式;条件表达式;更新表达式) {执行语句;}
  • 执行流程:
    ①执行初始化表达式,初始化变量;
    ②判断条件表达式;若真,则执行语块中的执行表达式;
    ③执行更新表达式,然后重复循环;
  • 注意:
    ①初始化表达式只会执行一次,第一次循环中执行一次后都不会再在后面的循环中执行了。
    ②如果括号内不写任何表达式,只写两个分号,则这是一个死循环。
    括号中的分号前可以用逗号分开写多个表达式。

for循环练习

- ①判断质数

    var num=prompt("请输入判断数字:");
    var flag=true;
if(num<=1)
{
    alert("输入错误");
}
else
{
    for(var i=2;i<num;i++)
{
    if(num%i==0)
    {
        flag=false;
    }
}
if(flag)
{
    alert(num+"是质数!!!");
}
else
alert(num+"不是质数!!!");
}

- ②实现三角形输出

&nbsp代表空格

for(i=0;i<5;i++)
{
    for(j=0;j<i+1;j++)
    {
        document.write("* &nbsp&nbsp&nbsp");
    }
    document.write("<br/>");
} 
  • ③实现99乘法表
for(var i=1;i<=9;i++)
{
    for(var j=1;j<=i;j++)
    {
        document.write("<span>"+i+"*"+j+"="+i*j+"<span>");
    }
    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)
    document.write(i);
}

6、break与continue

  • break关键字

①可以用来退出switch或循环语句,不能用于退出if语句;
理解例子中的break与if和for的关系:

for(var i=0;i<5;i++)
{
    if(i==2)
    {
        break;
    }
    document.write(i);
}

②默认立即终止离他最近的循环语句;如果想要终止指定循环,可以为循环语句创建一个标签来表示当前循环。
语法:
标签名字:循环语句 break 标签名字;
例:

outer:
for(var i=0;i<5;i++)
{
    document.write(i+"外层循环")
   for(var j=0;j<5;j++)
   {
    document.write(j+"内部循环");
    break outer;
   }
}
  • continue关键字

可以用来跳过当前一次循环;
默认作用于离它最近循环,也可以用标签指定循环来特定跳过指定循环;

  • return

return可以结束整个函数

7、计时器:

测试程序性能

在程序执行前开始一个计时器。

  • 语法:
    consle.time("计时器名字")

在程序执行完后结束计时器

  • 语法:
    console.timeEnd("计时器名字")

用优化性能后范围内输出质数来和优化前的比较做例子:(因为它们输出其中的质数花的时间一样,所以就不要输出了,浪费时间;放大范围,这样子差距就明显了)

console.time("normal");
for(var i=2;i<10000;i++)
{
    var flag=true;
    for(var j=2;j<i;j++)
    {
        if(i%j==0)
        {
            flag=false;
        }
    }
    //if(flag)
    //document.write(i);
}
console.timeEnd("normal");
console.time("develop");
for(var i=2;i<10000;i++)
{
    var flag=true;
    for(var j=2;j<i;j++)
    {
        if(i%j==0)
        {
            flag=false;
            break;
        }
    }
    //if(flag)
    //document.write(i);
}
console.timeEnd("develop");

8、求根函数:

语法:
Math.sqrt(求根数)

九、引用数据类型

(一)对象:

  • 概念: 基本数据类型是单一的值,值和值之间没有任何联系,我们创建的变量都是独立的不能成为整体。
    对象是一种复合的数据类型,在对象中保存多个不同数据类型的属性。(理解为装值的)

(二) 分类:

  • 内建对象:ES标准中定义的对象,在任何的ES的实现中都可以使用。
  • 宿主对象:由JS运行环境提供的对象,目前来说主要由浏览器提供的对象。
  • 自定义对象: 由开发人员自己创建的对象。

(三)自定义对象相关语法

使用new关键字调用constructor构造函数专门创建对象;
使用typeof检查一个对象,会返回object;

  • 自定义对象

语法:
var 对象名称=new Object();
例子
var obj=new Object();

  • 向对象添加属性

语法:
对象名称. 属性名称=属性值;
例子
obj.name=“孙悟空”;
obj.gender=“男”;
obj.age=18;

  • 读取对象属性

语法:
对象名称.属性名;
例子
document.write(obj.gender);

  • 修改对象的属性值

语法
对象名称。属性名称=新值;
例子
obj.name=“马大姐”;

  • 删除对象中的属性

语法
delete 对象名称.属性名称
例子
delete obj.name;

  • 检查对象中是否含有指定的属性

使用 in运算符,可以检查对象中是否含有指定的属性,如果有返回true,否则返回false
语法:
"属性名称"in 对象名称
例子
var obj2=new Object();
obj2.name=“孙悟空”;
console.log(“name” in obj2);

(四)属性

概念: 对象中保存的值叫做属性;
如果对象没有要读取的属性不会报错,会返回undefined;
属性名称不强制要求遵守标识符的规范,但最好遵守;
当我们使用特殊的属性名时,不能用.的方式来操作,会报错
这时有另一种推荐的方法来添加,而我们对应读取时也要用这种方式。
语法:
对象名称["属性名称"]=属性值;
特点
这种方式更为灵活,当读取时,在[]中传递一个变量,这样当变量值是多少,就会传递变量值对应的属性值*
例子

var obj=new Object();
obj["145"]=18;
var n=145;
console.log(obj[n]);
console.log(obj[145]);

属性值可以是任意数据类型,甚至可以对对象。
例子:

var obj1=new Object();
obj1.name="猪八戒";
var obj2=new Object();
obj2.name="孙悟空";
obj1.obj2=obj2;//注意这里没加双引号了
console.log(obj1.obj2.name);

(五)枚举

使用for…in 语句 枚举对象中的属性
①for…in语句中查询的对象有几个属性,循环体就执行几次。
②每执行一次,会将查询的对象中的一个属性的名字赋值给变量。
语法:
for(var 变量 in 对象){}
例如:

var obj={
    name:"孙悟空",
    age:18,
    gender:"男"
}
for(var n in obj){
    console.log(n);//可以查到对象里面的属性名;
    console.log(obj[n])//可以查到属性值,用[]是因为n这个变量并不是对象中的属性,只是在这个for..in语句中定义用来查询的变量名称。
}

(六)对象字面量

使用对象字面量创建对象并直接指定属性
语法:创建对象
var 对象名称={};
语法:创建对象的同时指定属性
(其中,对象字面量的属性名称可以加引号,也可以不加,建议不加,但如果使用特殊的名称就必须加)
var 对象名称={属性名称:属性值,属性名称:属性值};

(七)栈内存与堆内存

JS中的变量是保存在栈内存中的:
基本数据类型的值直接在栈内存中存储,其中保存的变量的值与值之间是独立存在的,修改一个变量的值不会影响其他的变量
而在栈内存中的对象变量保存的值是它的内存地址,地址是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间(对象引用)。

     例子1现象:如果一个对象的属性改变,另外一个与它建立联系的对象呀我会改变,并不会判断此改变是在联立联系前还是后
var obj=new Object;
obj.name="孙悟空";
var obj1=obj;
obj.name="猪八戒";
document.write(obj1.name);
 例子2现象:当其中一个对象将属性改成了null,并不会影响与之与联系的对象,因为这样子只是意味着与保存的地址断开了联系。
var obj=new Object;
obj.name="孙悟空";
var obj1=obj;
obj=null;
console.log(obj);
console.log(obj1);

当比较两个变量时,就是比较值,但比较两个对象时,是比较对象的内存地址。
所以定义了的两个对象,即使两个对象里面的属性一模一样,但两者开辟的是两个空间,所以两个对象是不相等的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值