JavaScript

(一)、JavaScript简介

一个完整的javascript包含ECMAScript、DOM和BOM
特点:
1.解释型语言(不用编译)
2.类似C和JAVA的语法结构
3.动态语言
4.基于原型的面向对象

(二)、JS的hello word

JS语言需要在script标签下输入
从上到下的顺序执行
alert(“”);在警告框中输入内容
document.write(“”);在页面中输一个内容(也就是向body中输入一个内容)
console.log(“hello word”);向控制台输入一个内容

<!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>
        alert("hello word");
        document.write("hello word");
        console.log("hello word");
    </script>
</head>
<body>
    
</body>
</html>

(三)、js编写位置

1.可以写在标签的属性当中,但是行为与结构耦合,不推荐(行内式)
onclick
2.在html页面中加一个script标签(可以在放html文档中的任意地方,任意数量。一般置于body的底部,可改善显示速度),在里面写js代码。可以放在head或body(内嵌式)
3.通过script标签引用外部的js文件,注意:script标签引用后就不能再在里面写js代码了(外链式)

<!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 src="./1.js">
 
    </script>
    <script>    
        alert("hello word");
        document.write("hello word");
        console.log("hello word");
    </script>
</head>
<body>
    
</body>
</html>

(四)、js的基本语法

js注释:
/**/(多行注释)
//(单行注释)

  1. JS中严格区分大小写
  2. 每条语句以分号(;)结尾(如果不写,浏览器会添加但会消耗资源,也有可能加错分号)
  3. 自动忽略多个空格和换行,可以用空格和换行对代码进行格式化
  4. 大括号表示代码块

(五)、字面量和变量

字面量:都是一些不可改变的值,可以直接使用(但在开发中一般不会直接使用字面量)
  如:1,2,3,4,
变量:变量可以用来保存字面量,而且变量的值可以任意改变,也可以对字面量进行描述,变量更方便使用。变量可以存放不同类型的值

声明变量:使用关键字var来声明一个变量(全局变量,可重复定义)
 声明和赋值可以同时进行
  如:var b=123;

(六)、标识符

标识符:在JS中所有可以由我们自主命名的都可以称为标识符
如:变量名,函数名,属性名都属于标识符

命名规则:
1.标识符中可以含有字母,数字,_,$,中文(不建议使用)
2.不能以数字开头
3.不能是ES中的关键字和保留字
4.标识符一般采用驼峰命名法:首字母小写,每个单词的开头字母大写,其余字母小写
5.严格区分大小写
6.不要出现空格
尽量命名有意义(语义化)
JS底层保存标识符时实际上是采用的Unicode编码
所以理论上讲,所有的utf-8中含有的内容都可以作为标识符

(七)、数据类型

数据类型:指的就是字面量的类型
在JS中一共有六种数据类型
 String  字符串,单双引皆可
 Number  数值 (整数,小数,NaN)
 Boolean  布尔值
 Null  空值 (typeof返回的是object)
 Undefined   未定义
 Object  对象

其中 String Number Boolean Null Undefined属于基本数据类型,Obejct属于引用数据类型
用typeof判断数据类型,得到的值是String类型的数据

7.1字符串

字符串:使用字符串需要使用引号引起来
使用双引号或单引号都可以,但是不要混着用
引号不能嵌套,双引号不能放双引号,单引号不能放单引号
可以使用\作为转义字符,表示一些特殊符号时可以使用\进行转义

\n 表示换行
\t 制表符
\\ 表示\

7.2Number

Number:所有的数值都是Number类型,包括整数和浮点数(小数)
2e3(科学计数法)

可以使用typeof检查变量类型
语法:typeof 变量

JS中可以表示数字的最大值
 Number.MAX_VALUE
  1.7976931348623157e+308
如果使用Number表示的数字超过了最大值,则会返回一个
 Infinity 表示正无穷
 -Infinity 表示负无穷
 使用typeof检查Infinty也会返回Number
 NaN是一个特殊的数字表示Not A Number
最小值(大于0的最小值)
 Number.MIN_VALUE
   5e-324

在JS中整数运算基本可以保证精确
如果进行浮点元素,可能得到一个不精确的结果,所以不要使用JS进行精确度要求比较高的运算

7.3 Boolean

Boolean:布尔值只有两个,主要用来做逻辑判断
true:表示真
false:表示假

7.4Null

Null:只有一个值,就是unll
  null这个值专门表示为空的对象
  检查null值时,会返回object

7.5Undefined

Undefined:只有一个值,就是undefined
  当声明一个变量,但并不给变量赋值时,它的值就是undefined

(八)、强制类型转换

强制类型转换:指将一个数据类型强制转换为其他的数据类型
   类型转换主要指,将其他的数据类型,转换为
     String Number Boolean

8.1强制类型转换-String

类型转换-String:
  方法一:调用该转换数据类型的toString()方法
  该方法不会影响到原变量,它会将转换的结果返回
  注意:null和undefined这两个值没有toString方法
  a=a.toString();
  a=toString(a);
方式二:调用函数Sting()函数,并将被转换的值作为参数传递给函数,可以转换所有类型
   对于null和undefined,不会调用toString()方法,它会直接转换为字符串
方式三:用+号,两边有一个是字符串会自动转换

8.2强制类型转换-Number

类型转换-Number
方式一:使用Number()函数
  1.如果是纯数字字符串,则直接将其转换为数字
  2.如果字符串中有非数字内容,则转换为NaN
   3.如果字符串是一个空串或者全是空格的字符串,则转换为0
   4.布尔值转换,true转为1,false转为0
   5.null转换为数字0
   6.undefined转换为NaN
方式二:这种方式专门用来对付字符串
   parsenInt()把一个字符串转换为一个整数
   parseFloat()把一个字符串转换为一个浮点数
   如果对非String使用parseInt()或parseFloat()
   它会先将其转换为String然后再操作
方式三:除了加法的数学运算

8.2强制类型转换-Boolean

方法:使用Boolean()函数
 数字转布尔(除了0和NaN都是true)
 字符串转布尔(除了空串,其余都是true)
 null和undefined都会转为false
 对象也会转为true

(九)、其它进制数字:

16进制:以0x开头
8进制:以0开头
2进制:以0b开头(但不是所有的浏览器都支持)
可以在parsenInt()中传递一个第二个参数,来指定数字的进制

(十)、运算符

运算符:运算符也叫操作符,可以对一个或多个值进行运算。
如:typeof就是运算符,可以来获得一个值的类型
它会将该值的类型以字符串的形式返回

10.1 算数运算符

+  加法
-   减法
*   乘法
/   除法
%  取余

当对非Number类型的值进行运算时,会将这些值转换为Number然后再运算。
任何值和NaN做运算都得NaN。

如果对两个字符串进行加法运算,会将两个字符串拼接为一个字符串,并返回。
任何的值和字符串做加法运算,都会先转换为字符串,然后再和字符串进行拼串的操作。

为任意的数据类型+一个""既可将其转换为String,这是一种隐式转换,由浏览器自动完成。
可以通过为一个值-0,*1,/1来将其转为Number。

10.2一元运算符

只需要一个操作数
+ 正号(正号不会对数字产生任何影响)
- 负号(负号可以对数字进行符号的取反)

对于非Number类型的值,它会先将其转换为Number再运算
可以对其他数据类型使用+转为Number

10.3逻辑运算符

! 非
可以对一个值进行非运算
既对一个布尔值进行取反操作
如果对非布尔值元素进行操作,则会先转换为布尔值再取反
可以为一个任意数据类型取反两次,来将其转换为布尔值

&& 与
可以对符号两侧的值进行与运算并返回结果
只要有一个false就返回false
第一个值为false则不会检查第二个值

|| 或
可以对符号两侧的值进行或运算并返回结果
两个都是false则返回false
有一个是true则返回true
第一个值为true则不会检查第二个值

非布尔值的与或运算
先将其转换为布尔值,然后再运算,并且返回原值

与运算:如果两个值都为true,则返回后边的值。
如果两个值都为false,则返回靠前的false
如果第一个值为true,则必然返回第二个值
如果第一个值为false,则直接返回第一个值

或运算:如果第一个值为true,则直接返回第一个值
如果第一个值为false,则直接返回第二个值

10.4赋值运算符

= 可以将符号右侧的值赋值给符号左侧的变量
+= 等价a = a + b
-=
*=
/=
%=

10.5关系运算符

关系运算符:
比较两个值之间的大小关系
如果关系成立会返回true,不成立返回false

(>)判断符号左侧的值是否大于右侧的
如果关系成立会返回true,不成立返回false

(>=) 判断符号左侧的值是否大于或等于右侧的

< 小于号
<= 小于等于

非数值情况:
  先将其转化为数字再进行比较
  如果符号两侧都是字符串,不会转换为数字比较,而是分别比较字符串中字符的Unicode编码
  比较字符编码时是一位一位比较
  如果两位一样,则比较下一位,所以借用它来对英文进行排序
  比较中文无意义
  任何值和NaN做任何比较都是false

如果比较的两个字符串型的数字,可能会得到不可预期的结果
  比较两个字符串型数字时,一定要转型

10.6相等运算符

== 比较两个值是否相等
  相等返回true,否则返回false
  如果比较值的类型不同,会自动进行类型转换,转换为同类型,然后再比较
  undefined衍生自null
  所以两个值做相等判断时,会返回true
  NaN不和任何值相等,包括它本身
  可以通过isNaN()函数判断一个值是否是NaN(是NaN返回true)

!= 不相等
  也会进行自动类型转换
  不相等返回true

=== 全等
  如果两个值类型不同,直接返回false
  不会做自动的类型转换

!== 不全等
  如果两个值类型不同,直接返回true
  不会做自动类型转换

10.7条件运算符

也叫三元运算符
语法:条件表达式?语句1:语句2;
首先对条件表达式进行求值,如果为true,则执行语句1,并返回执行结果
如果表达式的求值结果是一个非布尔值,会将其转换为布尔值然后再运算

10.8运算符的优先级

在表中越靠上优先级越高,优先级越高越优先计算
如果优先级一样,则从左往右计算
如果遇到优先级不清楚的,可以用()改变优先级
在这里插入图片描述

,运算符
使用,可以分割多个语句,一般在声明多个变量使用

10.9代码块

语句是按照自上向下的顺序一条一条执行的
在JS中使用{}来为语句进行分组
同一个{}中的语句我们称为是一组语句
它们要么都执行,要么都不执行
一个{}中的语句也叫一个代码块
代码块后不用编写;
代码块只具有分组的作用,没有其他用途
代码块内部的内容,在外部是完全可见的

(十一)、自增和自减

++ 自增
通过自增可以使变量在自身的基础上增加1
对于一个变量自增以后,原变量的值会立即自增1
无论a++还是++a,都会立即使原变量的值自增1
a++的值等于原变量的值(自增前的值)
++a的值等于变化后的值(自增后的值)

(- -) 自减
通过自减可以使变量在自身的基础上减少1
对于一个变量自减以后,原变量的值会立即自减1
无论a- -还是- -a,都会立即使原变量的值自减1
a- -的值等于原变量的值(自减前的值)
- -a的值等于变化后的值(自减后的值)

(十二)、Unicode编码

在JS中的输出方式:\u四位编码;这里的编码是16进制
在网页中使用Unicode编码:&#编码;这里的编码是10进制

(十三)、if语句

语法一:
if(条件表达式)
  语句
if语句在执行时,会对条件表达式进行求值判断
如果条件表达式的值为true,则执行if后的语句
如果条件表达式为false,则不会执行if后的语句
 if语句只能控制紧随其后的那个语句
 如果要控制多条语句,可以将这些语句统一放到代码块中
if语句后的代码块不是必须,但在开发中尽量写上代码块,即使if后只有一条语句

语法二:
if(条件表达式){
语句
}else{
语句
}

语法三:
if(条件表达式){
语句
}else if(条件表达式){
语句
}else if(条件表达式){
语句
}else{
语句
}
当该语句执行,会从上到下依次对条件表达式进行求值判断
如果值为true,则执行当前语句
如果值为false,则继续向下判断
如果都不满足,则执行最后一个else里的语句
该语句中只有一个代码块会被执行,一旦执行则整个结束

prompt()可以弹出一个提示框,该提示框中会带有一个文本框
 用户可以在文本框中输入一段内容,该函数需要一个字符串作为参数
 该字符串将会作为提示框的提示文字
 用户输入的内容将会作为函数的返回值返回,可以定义一个变量接收该内容
 返回值是String类型

练习:

<!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("输入成绩(0-100)");
            
        if(a>100||a<0)
        {
            alert("输入有问题")
        }else
        {   if(a==100)
            {
                alert("给你宝马")
            }else if(a>=80 && a<=99)
            {
                alert("给苹果15")
            }else if(a>=60 && a<80)
            {
                alert("一本书")
            }else{
                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 num1=+prompt("输入第一个");
        var num2=+prompt("输入第二个");
        var num3=+prompt("输入第三个");

        if(num1<num2 && num1<num3)
        {
            if(num2<num3)
            {
                alert(num1+","+num2+","+num3);
            }else
            {
                alert(num1+","+num3+","+num2);
            }
        }else if(num2<num1 && num2<num3)
        {
            if(num1<num3)
            {
                alert(num2+","+num1+","+num3);
            }else
            {
                alert(num2+","+num3+","+num1);
            }
        }else
        {
            if(num1<num2)
            {
                alert(num3+","+num1+","+num2);
            }else
            {
                alert(num3+","+num2+","+num1);
            }
        }


    </script>
</head>
<body>
    
</body>
</html>

(十四)、switch语句

语法:
swithc(条件表达式)
{
 case 表达式:
 语句
 break;
 default:
 语句
 break;
}

执行流程:
  switch…case…语句
  在执行时会依次将case后的表达式的值和switch后的条件表达式的值进行全等比较
 如果比较结果为true,则从当前case开始执行,当前case后的所有代码都会执行
 如果比较结果为false,则继续向下比较
 使用break可以退出switch语句
 若所有比较结果都为false,则只执行default后的语句
 不要写比较运算符

练习:

<!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>
        switch(parseInt(score/10))
        {
            case 10:
            case 9:
            case 8:
            case 7:   
            case 6:
                console.log("合格");
                break;
            default:
                console.log("不合格")
        }
    </script>
</head>
<body>
    
</body>
</html>

(十五)、while循环

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

条件表达式写为true的循环,叫死循环
该循环不会停止,除非浏览器关闭
可以用break来终止循环

do…while循环
  语法:
  do
  {
   语句
  }while(条件表达式)

执行流程:
  会先执行循环体,执行完毕后再对while后的条件表达式进行判断
  如果结果为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 money=1000;
        var count=0;
        while(money<5000)
        {
            money*=1.05;
            count++;
        }
        console.log(money);
        console.log(count);
    </script>
</head>
<body>
    
</body>
</html>

(十六)、for循环

语法:
 for(初始化表达式;条件表达式;更新表达式)
 {
 语句
 }
执行流程:
 1、执行初始化表达式。初始化变量
 2、执行条件表达式,判断是否执行循环
  如果为true,则执行循环3
  如果为false,终止循环
 3、语句
 4、执行更新表达式,更新表达式执行完继续重复2

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>
        var sum=0,count=0;
        for(i=0;i<=100;i++)
        {
            if(i%7==0)
            {
                console.log(i);
            }
        }
console.log(sum+=i);

    </script>
</head>
<body>
    
</body>
</html>

(十七)、质数练习

Math.sqrt()
开平方

<!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 i=2;i<=100;i++)
        {
            var flag=true;
            for(var j=2;j<=Math.sqrt(i);j++)
            {
                if(i%j==0)
                {
                    flag=false;
                }
            }
            if(flag)
            {
                console.log(i)
            }
        }
    </script>
</head>
<body>
    
</body>
</html>

(十八)、嵌套for循环

<br /> 换行

外部循环控制高度
内部循环控制宽度

<!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 i=0;i<5;i++)
        {
            for(var j=0;j<j+1;j++)
            {
                document.write("*")
            }
            document.write("<br />");
        }
    </script>
</head>
<body>
    
</body>
</html>

(十九)、break和continue

break:
可以用来退出switch或循环语句
会立即终止离他最近的循环语句
可以创建一个label,标识当前循环
label:循环语句
使用break语句时,可以在break后跟一个label
这样break将会结束指定的循环,而不是最近的

continue:
可以跳过当次循环
默认对离他最近的循环起作用

(二十)、函数的简介

函数是一个对象
函数可以封装一些功能(代码),在需要的时候可以执行这些功能(代码)

注:因为JavaScript是弱类型语言,形参不需要定义类型,返回值也不需要,可以直接使用return返回

创建一个函数对象
可以将要封装的代码以字符串的形式传递给构造函数
var fun=new Function()

封装到函数中的代码不会立即执行
会在函数调用的时候执行
调用函数 语法:函数对象()
调用函数时,封装的代码会按顺序执行
但在实际开发中很少使用构造函数来创建一个函数对象

函数声明创建一个函数(声明式)
语法:function 函数名([形参1,形参2…]){
语句…
}

使用函数表达式创建一个函数(赋值式)
var 函数名 =function([形参1,形参2…]){
语句…
}

(二十一)、函数的参数

可在函数的()中来指定一个或多个形参(形式参数)
多个形参用,隔开。声明形参相当于在函数内部声明了对应的变量
但是没有赋值

在调用函数时,可以在()中指定实参(实际参数)
实参将会赋值给函数中对应的形参

调用时解析器不会检查实参的类型
所以要注意对参数类型进行检查,否则有可能收到非法的参数
函数的实参可以是任意的数据类型
也不会检查实参的数量,多余的实参不会被赋值
如果实参的数量小于形参,则无对应实参的形参是undefined

(二十二)、函数的返回值

使用return设置函数的返回值
语法:return 值
return后的值将会作为函数的执行结果返回
可以定义一个变量,来接收该结果
return后的语句不会执行

只有return会返回undefined
return后可以返回任意类型的值

(二十三)、实参

实参可以是任意的数据类型,也可以是一个对象
参数过多时,可以将参数封装到一个对象中,然后通过对象传递

实参也可以是一个函数

函数名()
想当于使用函数的返回值

函数名
相当于直接使用函数对象

(二十四)、返回值的类型

return可以结束整个函数
返回值可以是任意的数据类型
也可以是一个对象,一个函数

(二十五)、立即执行函数

函数定义后,立即被调用
一般只会执行一次

(function(a,b){
console.log("a="+a);
console.log("b="+b);
})(1,2)

(二十六)、方法

如果一个函数作为一个对象的属性保存称为这个对象的方法
调用这个函数就说调用对象的方法
只是名称上的区别没有其他区别

枚举对象中的属性
使用for in语句
语法:for(var 变量 in 对象){
}

在这个语句中对象有几个属性,循环体就会执行几次
每次执行时,会将对象中的一个属性的名字赋值给变量

(二十七)、作用域

作用域指一个变量的作用的范围

全局作用域
直接编写在script标签中的JS代码,都在全局作用域
全局作用域在页面打开时创建,在关闭时销毁

在全局作用域中有一个全局对象window
它代表的是一个浏览器的窗口,它由浏览器创建我们可以直接使用
创建的变量都会作为window对象的属性保存
创建的函数都会作为window对象的方法保存

变量的声明提前
使用var关键字声明的变量,会在所有的代码执行之前被声明。但是并不会赋值

函数的声明提前
使用函数声明形式创建的函数function函数(){}
它会在所有的代码执行之前就被创建

全局作用域中的变量都是全局变量
在页面的任意部分都可以访问的到

函数作用域
调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
在函数作用域中可以访问到全局作用域的变量

当在函数作用域操作一个变量时,会先在自身作用域中寻找,如果有就直接使用。如果没有,向上一级寻找直到全局作用域
全局作用域也没有则报错

在函数中访问全局变量可以使用window对象
在函数作用域中也有声明提前的特性

(二十八)、对象的简介

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

对象的分类:
1.内建对象
   在ES标准中定义的对象,在任何的ES的实现中都可以使用
   如:Math String Number Boolean Function Object
2.宿主对象
   由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
   如:BOM DOM
3.自定义对象
   由开发人员自己创建的对象

(二十九)、对象的基本操作

使用new关键字调用的函数,是构造函数constructor
构造函数是专门用来创建对象的函数

在对象中保存的值为属性
向对象添加属性
语法:对象.属性名=属性值;

读取对象中的属性
语法:对象.属性名

如果读取对象中没有的属性,不会保错而是返回undefined

修改对象的属性值
语法:对象.属性名=新值

删除对象属性
语法:delete 对象.属性名

(三十)、属性名和属性值

使用特殊的属性名,不能采用.的方式来操作
需要使用另一种方式
  语法:[“属性名”]=属性值
读取也要采用这种方式

使用[]这种形式操作属性,更加灵活
在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性

属性值
JS对象的属性值,可以是任意的数据类型
  甚至也可以是一个对象

in 运算符
通过该运算符可以检查一个对象中是否含有指定的属性
  如果有则返回true,如果没有则返回false
语法:
 “属性名” in 对象

(三十一)、基本数据类型和引用数据类型

JS中的变量都是保存到栈内存中的
基本数据类型的值直接在栈内存中储存
值与值之间是独立存在,修改一个变量不会影响其他变量

对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间
而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响

(三十二)、对象字面量

使用对象字面量,可以在创建对象时,直接指定对象中的属性
语法:{属性名:属性值,属性名:属性值…}
属性名可以加引号也可以不加,但是使用特殊名字必须加引号

属性名和属性值是一组一组的名值对结构
名和值之间使用:连接,U盾讴歌名值对之间使用,隔开
如果一个属性之后没有其他属性了,就不要写,

对象的遍历
for(var 变量名 in 函数名){
console.log(i)
}

(三十三)、不同数据类型储存

栈:保存简单类型 保存的地址
堆:保存复杂类型

(三十四)、数组

在这里插入图片描述
创建数组:
var arr1=new Array(12,13,14)创建数组,里面的数据为12,13,14
var arr2=new Array(12)创建数组长度为12

数组的长度
console.log(arr1.length)
length可以调整长度

清空数组
arr1.length=0

索引 0,1,2,3
console.log(arr1[0])
可以通过索引直接修改内容

遍历
for(var i=0;i<arr1.length;i++)

冒泡排序法:

<!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 arr=[4,8,5,6];
        for(var m=0;m<arr.length-1;m++){
         for(var i=0;i<arr.length-1-m;i++){
            if(arr[i]>arr[i+1])
            {
                var temp=arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=temp;
            }
         }
        }
    </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 arr=[4,8,5,6];
        for(var m=0;m<arr.length-1;m++){
            var minindex=m;
         for(var i=m+1;i<arr.length;i++){
            if(arr[i]<arr[minindex])
            {
                minindex=i;
            }
         }
         var temp=arr[m];
         arr[m]=arr[minindex];
         arr[minindex]=temp;
        }
    </script>
</head>
<body>
    
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值