Bootstrap

JavaScript引用值篇

1. 数组:

(1)数组里边可以放很多东西,他是一个存放物品的一个集合,他的形式是一个中括号里边放入很多值(数字、字符串、undefined 等等都可以),例如:var arr = [1,2,3,undefined,“abc”]
(2)数组的读和写入:
由于数组里边存放的不是一个数据,是很多数据,所以我们再计算的时候是要把每一 个数拿出来计算的,而不是计算数组,拿 var arr = [1,2,3,4,5] 举例:

  • 读:由于计算机计数是从 0 开始的,所以我们要取第一位的值就是 arr[0],数组的第二位是 arr[1],比如说输出数组第 1 位就是 console.log(arr[0]);,输出第一位得 1。
  • 写入:当然我们也可以给数组的每一位重新赋值,比如 arr[0] = 2,此时把上边的数组 第一位变成了 2,数组就变成了[2,2,3,4,5]
  • 数组的长度:arr.length 表示数组的长度,由于上边的数组有五位,所以我们 console.log(arr.length)得 5.

(3)遍历数组,拿 var arr = [1,2,3,4,5]举例:

我们可以用 for 循环把数组的每一位单独输出

var arr = [1,2,3,4,5];
for(var i = 0; i < arr.length; i++){
	console.log(arr[i]); 
}

因为数组的第一位是 0,所以定义 i 等于 0,i 小于 arr.length,就是最后一圈 i = arr.length – 1,因为是从 0 开始计数,所以第五位就是 arr[4],此时就把数组的每一位都输出了。

如果我们想把数组的每一位都改成 1,可以这么写

var arr = [1,2,3,4,5];
for(var i = 0;i < arr.length; i++){
	arr[i] = 1;
}

如果我们想把数组的每一位都加 1,可以这么写

var arr = [1,2,3,4,5];
for(var i = 0;i < arr.length; i++){
	arr[i] += 1;
}

2. 对象:

对象也是存储数据的一个仓库,只不过比数组更直观一点,数组的每一位都 没有给他起名字,只不过叫第一位第二位,对象就不一样了,对象给他加了一个属性名,他的形式是,例如:

var car = {
	name: "BMW",
	color: "yellow",
	height: "1463",
	width: "1827",
	lang: "4829",
}

属性名后边加上冒号在加上属性值,最后用逗号(不是分号,写分号会报错的)。

对象的取值方法:变量名.属性名,例如上边的,我们 console.log(car.name) 就会输出 BMW,我们也可以重新赋值,例如 car.name = “Mercedes”.

3. typeof 操作符 :

typeof 操作符的作用是区分数据类型,比如说

var num = 123;
var txt = "123";
console.log(typeof(num));//输出为 number也可以写成 console.log(typeof num)
console.log(typeof(txt));//输出为 string

typeof 有六种数据类型:number(数字)、string(字符串)、boolean(true 和 false)、 undefined(undefined)、 object(数组和对象和 null)、 function(函数)。

注意:我们平时没有定义变量直接输出,如 console.log(a)就会报错,但是我们即使没有定义变量,输出 console.log(typeof(a))会得到 undefined,我们 console.log(typeof(typeof(a)))会得到 string,因为输出的这个 undefined 是字符串类型的。

4. 显式类型转换 :

  • Number
    Number 可以把所有的值类型转化为数字类型,比如说 var num = Number(“123”),他就可以把字符串类型的 123 转换为数字类型的 123, console.log(typeof(num) + “:” + num);就得到 number:123.“123”转化为数字类型得到 123,“ -123”转换后得-123,true 转换后得 1,false 转换后得到 0,null 转换后得到 0,undefined 转换后得到 NaN,“ a”转换后得到 NaN,“ 123a”转换后得到 NaN,所有的值经历了 Number 的转换都能变成数字类型,只不过有些转换不成具体的数字的用 NaN 表示。

  • parseInt:他有两个作用
    作用一:他的作用就是把数字转化成整形,比如你 var num = parseInt(123.3),那么输出 num 就是 123(不能四舍五入,只是把后边的小数去掉),他还可以把带有数字的字符串转化为数字类型的整数,比如你 var num = parseInt(“ 123.9”),那么输出 num 就是 123,在比如你 var num = parseInt(“ 123abc”),他也会输出 123,他会从数字位往后看,看到非数字位后就把他砍断了,然后转换为数字类型的整数,他也就只能把带有数字的字符串转化为数字类型的整数(字符串里的数字必须在前),其他的例如 true、undefined 等等转换后都是 NaN。
    作用二:比如 var demo = 10;var num = parseInt(demo,16); parseInt 括号里有两个参数,16 他叫做 radix(基底),他就会认为这个 10 是 16 进制的,以 16 进制为基底,再把它转换成 10 进制的数,所以你输出 num 得 16.就是他会把目标进制做为基底再转换为十进制的数。radix 的取值范围是 2-36.

  • parseFloat
    parseFloat 和 parseInt 极其相似,他的作用就是把一个值转换为符点数,他还可以把带有数字的字符串转化为符点数,比如说 var num = parseFloat(123.2abc);输出 num 得到 123.2。其他的例如 true、undefined 等等转换后都是 NaN。

  • String
    String 的作用就是把值转化为字符串(任何值都可以转),比如 var num = String(123);console.log(typeof(num)+ “:” + num)得到 string:123,比如 var num = String(true);console.log(typeof(num)+ “:” + num)得到 string:true。

  • Boolean
    Boolean 的作用就是把一个值转换为布尔值,比如 var num = Boolean(“”),输出 num 得到 false,比如 var num = Boolean(“ 123”),输出 num 得到 true.

  • toString : 他有两个作用
    作用一:他也可以把值转换为字符串,但是写法和 String 不一样,var num = (123). toString();console.log(typeof(num)+ “:” + num)得到 string:123,但是 undefined 和 null 不能用 toString,会报错的。(toString 写法有点特殊,如果你想给数字 toString,你不能直接写成数字.toString(),会报错的,你必须给数字加个括号,写成(数字).toString( )才可以,其他的不用加)
    作用二:比如 var demo = 10; var num = demo.toString(8);toString 括号里放的是 radix(基底),但是他和上面讲的不一样,它是以 10 进制为基底转化为目标进制的数,也就是以 10 进制为基底转换为 8 进制的数,所以输出 num 得到 12.

  • toFixed :
    toFixed 的作用就是保留小数点后有效数字位的,比如 console.log(123.45.toFixed(1));括号里是 1,保留一位小数,输出 123.5(四舍五入)

5. 隐式类型转换 :

  • isNaN :
    isNaN的作用是判断一个值是不是NaN,比如 console.log(isNaN (NaN))输出得 true, console.log(isNaN(123))输出得 false,console.log(isNaN(“ 123”)),输出得 false,console.log(isNaN(“ a”))输出得 true,console.log(isNaN(undefined)) 输出得 true.

其实经历了 isNaN 的值系统会先让他调用 Number 来判断他是不是 NaN,如果是,就返 回 true,不是就返回 false。

  • ++ 和 --,+ 和 -(正/负) :
    所有的值经过 ++ 和 - - 的运算后都会先把他用 Number 转换为数字类型再计算,比如“1” ++ 就等于数字类型的 2,“ a”++ 就等于 NaN,+/- 也一样,他调用的也是 Number,-“1” 就等于数字类型的 -1,+“a”就等于 NaN.
  • + :
    如果加号两边有一边是字符串,他就会调用 String,把两个值连接起来,如果没有字符串,他就会调用 Number .
  • - 和 * 和 / 和 % :
    减、乘、除、摩尔他都会先调用 Number 转换为数字类型再计算 。
  • && 和 || 和 !
    !把他转换为布尔值再取反,所以他调用的是 Boolean,其实 && 和 || 调用的也是 Boolean, 它是把值转换为布尔值来判断真假的。
  • > 和 < 和 >= 和 <=
    如果两个字符串比较,就会用自己的阿斯克码比较,如果字符串和数字比较,就会把字符串转换为数字。
  • == 和 !=
    == 和 != 也会用隠式类型转换,输出 3==“3” 就得到 true。

注意:有几个特殊的,比如 1>2<1 得 true,他会一个一个算,1>2 是 false,转换后是 0,0<1 最后得 true。
还有 undefined 和 null 既不大于 0 又不小于 0 也不等于 0,所以 undefined==null(比较特殊,没有规则,系统定义的,系统规定他俩不能和数字比较,所以他和数字比较的时候也不会发生类型转换,就是不能比),NaN 不等于任何东西,包括自己。

6. 不发生类型转换 :

=== 和 !==
=== 是绝对等于, !== 是绝对不等于,这次两边必须一样才可以,1 === 1 得 true,1 === “1” 得 false,1 !== “1”得 true,但是 NaN === NaN 是 false.

声明:作者通过观看渡一教育免费公开课及相关文档总结的笔记,不做任何商业用途,仅供学习交流,感谢指正,如有侵权烦请立马联系,欢迎转载,请注明出处。

;