2021-08-07

偷学web前端之javascript

初始引用值,typeof,类型转换

数组
(1)数组里面能放很多东西,他是一个存放物体的集合,他的形式是一个中括号里面放很多值(数字,字符串,undefined等等都可以),例如:var arr =
[1,2,3,undefined,“abc”]
(2)数组的读和写入:
由于数组里面存放的不是一个数据,是很多数据,所以我们在计算的时候要把每一个树都拿出来计算,而不是计算组, var arr = [1,2,3,4,5]举例:
读:由于计算机读数是从0开始的,所以我们取的第一个值是arr[0],数组的第二位是arr[1],比如说输出数组的第一位就是console.log(arr[0]);输出第一位是1。
写入:当让我们也可以给数组的每一位重新赋值,比如arr[0]=2,此时上面数组的第一位就是2,数组就变成了[2,2,3,4,5]。
数组的长度:arr.length表示数组的长度,由于上面的数组有2位,所以我们console.log(arr.length)得5.
(3)遍历数组:
拿 var arr = [1,2,3,4,5]举例:
我们可以用for循环把数组的每一位输出
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,可以这样写:
for(var i = 0;i < arr.length;i++){
arr[i] = 1;
}
如果我们想把数组的每一位都加上1,可以这样写:
for(var i = 0;i < arr.length;i++){
arr[i] += 1;
}

对象
对象也是存储数据库的一个仓库,只不过比数组直观一点,数组的每一位都没有给他起名字,只不过叫第一位第二位,对象就不一样了,对象给他加一个属性名,他的形式是,例如:
var deng = {
lastname: “jiang”,
age: 21,
sex: undefined,
wife: “xiaoliu”,
father: “jiangdaye”,
son: “xiaochi”,
handsome: false,
}

属性名后面加上冒号再加上属性值,最后用逗号(不是分号,写分号会报错)
对象的取值方法:变量名.属性名,例如上面的,我们console.log(jiang.lastname)就会输出jiang,我们也可以重新赋值,例如jiang.lastname=“old jiang”

编程可以分为面向过程和面向对象两种,javascript属于半面向过程半面向对象的语言。

typeof操作符

typeof操作符的作用是区分数据类型,比如说
var num = 123;console.log(typeof(num));也可以写成console.log(typeof num)输出就得number,假如你var num = “123”;console.log(typeof(num));
输出就得到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是字符串类型的。

显式类型转换

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(四舍五入)

练习:一个二进制的数 10101010,转换为十六进制的数。
var demo = 10101010; 
var num = parseInt(demo,2); 
console.log(num.toString(16));
解析:先把 10101010 转换为 10 进制的数,在转换为 16 进制的数,parseInt 
是把目标进制转换为十进制,toString 是把十进制的数转换为目标进制

附:进制
满 x 个数后从个位变成十位就叫做进制,我们通常用的十进制就是满十进一(满十
后让个位变成 0,十位变成 1),比如说 9 + 1 = 10,但是比如说十一进制就是满
十一进一,即 9 + 1 = a,a + 1 = 10,但是这个 10(一零)这个数在我们十进制
里就是十一了。我们通常用到的有十进制,十六进制,二进制。

十六进制:1 2 3 4 5 6 7 8 9 a b c d e f 10,那么 f 就是十进制的 15,比如
说 1f就等于十进制的 16 + 15 = 31。
二进制:10 代表 2,11 代表 3,100 就是 2 的 2 次方,1000 就是 2 的 3 次
方。

隐式类型转化

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 不等于任何东西,包括自己。

不发生类型转换
=== !==
= = =是绝对等于,!= =是绝对不等于,这次两边必须一样才可以,1== =1 得 true,1== =“1” 得 false,1!= =“1”得 true,但是 NaN===NaN 是 false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值