JavaScript
- (一)、JavaScript简介
- (二)、JS的hello word
- (三)、js编写位置
- (四)、js的基本语法
- (五)、字面量和变量
- (六)、标识符
- (七)、数据类型
- (八)、强制类型转换
- (九)、其它进制数字:
- (十)、运算符
- (十一)、自增和自减
- (十二)、Unicode编码
- (十三)、if语句
- (十四)、switch语句
- (十五)、while循环
- (十六)、for循环
- (十七)、质数练习
- (十八)、嵌套for循环
- (十九)、break和continue
- (二十)、函数的简介
- (二十一)、函数的参数
- (二十二)、函数的返回值
- (二十三)、实参
- (二十四)、返回值的类型
- (二十五)、立即执行函数
- (二十六)、方法
- (二十七)、作用域
- (二十八)、对象的简介
- (二十九)、对象的基本操作
- (三十)、属性名和属性值
- (三十一)、基本数据类型和引用数据类型
- (三十二)、对象字面量
- (三十三)、不同数据类型储存
- (三十四)、数组
(一)、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注释:
/**/(多行注释)
//(单行注释)
- JS中严格区分大小写
- 每条语句以分号(;)结尾(如果不写,浏览器会添加但会消耗资源,也有可能加错分号)
- 自动忽略多个空格和换行,可以用空格和换行对代码进行格式化
- 大括号表示代码块
(五)、字面量和变量
字面量:都是一些不可改变的值,可以直接使用(但在开发中一般不会直接使用字面量)
如: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>