初始引用值

  • 数组
  • 对象

数组

数组对象用来在单独的变量名中存储一系列的值。形式是一个中括号,里面可以写很多东西,中间用逗号隔开,每个逗号类似可以隔开两个仓库,每个仓库可以放东西,比如 Number、String 、undefined,放什么类型的值都可以。

  1. var arr = [1,2,undefined,"abc",["a",1,5],null]
  2. // 数组的增加
  3. document.write(arr.push("吴彦祖"));
  4. // 打印arr-->[1,2,undefined,"abc",["a",1,5],null,"吴彦祖"]
  5. // 数组的删除(还有多种方法)
  6. arr.splice(0,1);
  7. // 打印出来是[2,undefined,"abc",["a",1,5],null]
  8. // 数组的修改
  9. arr[0]; //打印出来是0
  10. arr[0] = 100; //在打印出来就是100;
  11. // 数组的查看
  12. for(var i = 0;i<arr.length;i++)
  13. console.log(arr[i]);
  14. // 打印出对应于的值

关于数组的其他方法

  • For…In 声明
    使用 for…in 声明来循环输出数组中的元素。
  • 合并两个数组 - concat()
    如何使用 concat() 方法来合并两个数组。
  • 用数组的元素组成字符串 - join()
    如何使用 join() 方法将数组的所有元素组成一个字符串。
  • 文字数组 - sort()
    如何使用 sort() 方法从字面上对数组进行排序。
  • 数字数组 - sort()
    如何使用 sort() 方法从数值上对数组进行排序。

对象

JavaScript 对象是拥有属性和方法的数据。JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。在 JavaScript 中,对象是拥有属性和方法的数据。

var obj = {
    key : value,
    键 : 值,
    属性: 属性值; 
}


var car = {
    type:"Fiat", 
    model:500, 
    color:"white",
    money:undefined,
    newCar:false,
}

// 增加对象属性
car.width = "1.6m";
// 删除对象属性
delete car.width;
// 修改对象属性
car.width = "1.5m";

typeof

  • 六种数据类型
    • Number
    • string
    • boolean
    • undefined
    • object
    • null
// 语法
typeof("里面放数据")

// 例子

var num = 123;
var str = "123";
var a = true;
var b = null; 
var c = undefined;
console.log(typeof(num));    //打印-->number
console.log(typeof(str));    //打印-->string
console.log(typeof(a));        //打印-->boolean
console.log(typeof(b));        //打印-->object
console.log(typeof(c));        //打印-->undefined
//第二种方法
console.log(typeof c);        //打印-->undefined 空格也可以

类型转换

显示类型转换

  • Number(mix) 转换成数
  • parseInt(string,radix) 转换成整数
  • parseFloat(string) 把数字转换为浮点数
  • toString(radix) 转换成为字符串
  • String(mix) 把内容换成字符串
  • Boolean() 转换成布尔值
//Number转换成数
var num = Number("123");             // 打印123
var num = Number(true);                // 打印1
var num = Number(false);            // 打印0
var num = Number(null);                // 打印0
var num = Number(undefined);    // 打印NaN
var num = Number("a");                // 打印NaN
var num = Number("123abc");        // 打印NaN

// parseInt 转换成整数
// parseInt(String,radix)
// radix 是调整进制取值范围是2-36
// parseInt 是用数字从前往后截,截取到最后一个字符,如果出现非数字,把之前的数字返回(如例子一)

var num = parseInt("123.9");        // 打印123不是四舍五入
var num = parseInt(true);                // 打印NaN
var num = parseInt(false);            // 打印NaN
var num = parseInt(null);                // 打印NaN
var num = parseInt(undefined);    // 打印NaN
var num = parseInt("a");                // 打印NaN
var num = parseInt("123abc");        // 打印123  例子1

// parseFloat 把数字转换为浮点数

var num = parseFloat("123.9");         // 打印123.9
var num = parseFloat(true);                // 打印NaN
var num = parseFloat(false);            // 打印NaN
var num = parseFloat(null);                // 打印NaN
var num = parseFloat(undefined);    // 打印NaN
var num = parseFloat("a");                // 打印NaN
var num = parseFloat("123.2abc");    // 打印123.2

// String把内容换成字符串
var num = String(123.9);                     //打印"123.9"
var num = String(undefined);            //打印"undefined"

// Boolean转换成布尔值
// 除了undefined、null、NaN、""、0、false 打印出来的是false以外, 其他的全是true
var num = Boolean(123.9);                    // 打印 true
var num = Boolean(undefined);            // 打印false

// toString(radix) 转换成为字符串
// 两个不能用一个 undefined 一个 null,会报错 undefined 和 unll没有这个 toString 属性
// radix 是以10进制为基底转换为别的进制
// 用法:要转的数据.toString
var demo = 123;
var str = demo.toString();
console.log(str)                                    // 打印出"123"

隐式内容转换

  • isNaN()
  • ++/— +/-(一元正负)


  • -,*,/,%
  • &&,||,!
  • <,>,<=,>=
  • == !=
//isNaN()当你把数放在括号里面的时候他能判断这个是是不是NaN,然后给你返回回来

console.log(isNaN(NaN));            // 打印true

console.log(isNaN(123));            // 打印false

console.log(isNaN("123"));        // 打印false

console.log(isNaN("adc"));        // 打印true

console.log(isNaN(null);            // 打印false

console.log(isNaN(undefined);    // 打印true

// isNaN 在内部 执行了一个 Number 方法
// 比如 isNaN("abc")
// 首先执行了 Number("abc") 看是不是NaN 如果是就返回 NaN
// 所以这个 Number 它没有显示的去调用,是隐式的去调用
// ++,先调用Number
var a = "123";
a++;        // 打印出a-->124;

var a = "abc";
a++;        // 打印出a-->NaN;

// +/- 先调用Number
var a = + "abc";
console.log(typeof(a))    // 打印出Number


// + 隐式类型转换调用的是string
var a = "1" + 1;
console.log(typeof(a))    //打印出string
//-、*、/、% 隐式类型转换调用的是 Number
// <、>、<=、>= 如果有数字就调用 Number
var a = "1" < 2;
console.log(typeof(a)) // 打印出boolean
// == 、!=
var a = "1" == 1;
console.log(typeof(a))    // 打印出 boolean true
//特殊的
undefined > 0            //打印false
undefined < 0            //打印false
undefined == 0        //打印false
null > 0                    //打印false
null < 0                    //打印false
null == 0                    //打印false
undefined == null    //打印true
NaN == NaN                //不等于任何东西

不发生类型转换

  • === !==(绝对的等于 绝对不等于)
1 !== "1"     // true
1 !== 1         // false
NaN === NaN // false

还有一种特殊的

// a 在没有定义的情况下
typeof(a);// 用console.log 打印出 undefined


// typeof返回的值类型 都是 string 类型
typeof(typeof(a))// 用 console.log 打印出 string