JavaScriptd的输出方式
- 1.页面输出
document.write("页面输出方式");- 2.控制台输出方式
console.log("控制台输出方式");- 3.窗口弹出方式
alert("窗口弹出");
JS数据类型
基本数据类型
基本数据类型概述:基本数据类型都是单一的值,如"hello",123,true,值和值之间没有关系
基本数据类型:Number String Null Undefined Boolean
引用数据类型
引用数据类型:Object function(一种特别的对象,可以执行) Array(一种特别的对象,有数值下标,内部数据是有序的)
二者的区别:
基本数据类型:基本数据类型的值直接在栈内存中存储,值与值之间是独立存在的,修改一个变量不会影响其他的变量,比较两基本数据类型,比较的是值。
var a = 10;
var b = 10;
console.log(a == b);//当比较两个基本数据类型时,比较的是值
引用数据类型:对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,而变量保存的是对象的内存地址,(对象的引用)如果两个变量保存的是同一个对象引用,当通过一个变量修改属性时,另一个也会受到影响
var obj1 = new Object();
var obj2 = new Object();
console.log(obj1);//在堆内存中开辟内存空间,即内存地址
console.log(obj2);//在堆内存中新开辟内存空间
//当比较两个引用数据类型时,它是比较的对象的内存地址,两个对象一样,但是内存地址不一样,返回false
console.log(obj1 == obj2);
undefined和null的区别
undefined是表示变量定义了但未赋值
var a;
console.log(a);
null表示变量定义了也赋值了,但是赋的值是null
var a = null;
console.log(a);
什么时候赋值null
- 1)初始赋值,表名将要赋值的值类型是对象
- 2)结束前让对象称为垃圾对象,被垃圾回收器回收
var f = fun();
f = null;
判断数据类型的方法
- 1)typeof:可以判断undefined、数值类型、字符串、布尔值、function,但是区别不开object与array,null和object,判断这两种类型,一般返回都是object
- 2)instanceof:判断对象的具体类型
强制类型转换
1.转换成string类型
1)调用被转换类型的toString()方法,写法为a.toString()
-该方法不会影响原变量,会将结果返回
-null和object没有toString()方法,使用会报错
var a = true;
var b = a.toString();
console.log(typeof b);
console.log(b);
2)调用string()函数,将转换的数据作为参数传递给函数,写法为string()
-该函数的结果会返回,需要将结果赋值给一个变量并输出
-该函数适用于null和undefined
var a = null;
var a = String(a);
console.log(typeof a);
console.log(a);//null
var b = undefined;
b = String(b);
console.log(typeof b);
console.log(b);//undefined
3)任意的数据类型 +""
var e = 6;
e = e +"";
console.log(typeof e);//string
2.转换为number类型
1)Number()函数,只针对纯数字的字符串有效,包含英文的字符串进行转换,则会返回NaN,空串则返回0
- -布尔值转换成数字(true->0,false->1)
- -null转换成数字(null->0)
- -undefined转换成数字(undefined->NaN)
a = "abc";
b = Number(a);
console.log(b);//NaN
2)parseInt()函数,只取字符串中的有效整数
3)parseFloat()函数,将字符串转换为浮点数
ps:parseInt()和parseFloat()转换非字符串型,会将数据先转换成string类型,然后再转换
3.转换为boolean类型
-数字类型的转换为bool类型,除了0和NaN为false,其他都为true
-字符串类型转换,除了空字符串为false,其他都为true
-null 和 undefined 转换为false
-对象也会转换为true
语句
条件语句
if...else
第一种用法
if (条件){
语句... //条件为 true 时执行的代码
}
第二种用法
if (条件){
语句1... //条件为 true 时执行的代码
}else{
语句2... //条件为 false 时执行的代码
}
第三种用法
if (条件1){
语句1... //条件满足条件1 时执行的代码
}else if(条件2){
语句2... //条件满足条件2 时执行的代码
}else{
语句3...//条件1和条件2都不满足时执行此代码
}
switch...case
switch语句
switch(条件表达式){
case 表达式:
语句……;
// 使用break可以退出switch语句
break;
case 表达式:
语句……;
break;
default:
语句……;
break;
}
在执行switch语句时,会依次将case后的表达式与switch后的条件表达式的值进行全等比较
- 如果比较结果为true ,则从当前case处执行代码,当前的case语句都会执行,可以再case语句后加break,保证只执行当前case后面的语句
- 如果比较结果为faulse,则继续向下比较
- 如果所有的比较结果都为faulse,则执行default语句
ps:凡是能使用switch语句的,都能使用if语句实现
例如:大于60的都显示为合格,否则显示为不合格
var num = 99;
switch(parseInt(num / 10)){
case 6:
case 7:
case 8:
case 9:
case 10:
console.log("合格");
break;
default:
console.log("不合格");
break;
}
// 第二种方法
var score = 89;
switch(true){
case score >= 60:
console.log("合格");
break;
default:
console.log("不合格");
break;
}
循环语句
循环语句:用来控制语句执行的次数
for循环
for(初始化表达式 ; 条件表达式 ; 更新表达式){
语句...
}
while循环
while(条件表达式){
语句...
}
例子:
var i = 1;
while (i <= 10) {
console.log(i); i++;
}
do...while循环
do{
语句...
}while(条件表达式);
跳转控制 break:<1>关键字可以用来退出switch和循环语句(break只对最近的循环有效)
for(var i=0; i<5; i++){
console.log(i);
if(i == 2){
break; //对for循环起作用而不是对if语句起作用
}
}
<2>可以为for循环语句创建一个label,来标识当前的循环 语法: label:循环语句
outer: for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if (j == 5) {
break outer;
}
console.log(j);
}
}
continue:关键字用来跳过当次循环(只会对最近的循环有效)
对象
对象概述
对象概述:对象属于一种复合数据类型,在对象中可以保存多个不同数据类型的属性
对象的分类
- 内建对象:由ES表中中定义的对象,任何的ES的实现中都可以使用 例如:Math、String、Boolean、function、Object\
- 宿主对象:由JS的运行环境提供的对象,目前主要是浏览器对象
例如:BOM、DOM\ - 自建对象:由开发人员自己创建的对象
创建对象
创建对象
使用new关键字调用的函数是构造函数(构造函数是专门用来创建对象的函数)
var obj = new Object()
向对象中添加属性
向对象中添加属性,在对象中保存的值称为属性,向对象中添加属性的语法为
-
语法:对象.属性名 = 属性值
obj.name = "海绵宝宝";
obj.height = 120 ;
读取属性
读取对象中的属性,如果读取对象中没有的属性,不会报错,则会返回undefined
-
语法:对象.属性名
console.log(obj.name);
console.log(obj.id);
修改对象的属性值
-
语法: 对象.属性名 = 新值
obj.name = "派大星";
删除对象的属性值
-
语法:delete 对象.属性名
delete obj.name;
使用特殊的属性名
对象的属性名没有命名规范,若要使用特殊的属性名
-
语法:对象["属性名"] = 属性值
输出时也需要用此形式,[]可以直接传递一个变量,变量的值是多少,最后输出就是多少
var obj["12"]= 123;
var a = "123";
console.log(obj["123"]);
console.log(obj[a]);
in 运算符
- 属性值可以是任意的数据类型,也可以是对象
- in 运算符,可以检查一个对象中是否含有指定的属性,如果有,则返回TRUE,如果没有则返回FALSE
-
语法:"属性名" in 对象
console.log("name" in obj);