我来更新新的学习总结啦!
4.Null
Null(空值)类型的值只有一个那就是null,null这个值专门用来表示一个空的对象
我来检测一下null值的数据类型,如下:
这里我们看到null的数据类型返回的是object!
注意我们用typeof来检查一个null值时,返回的不是null类型而是object!!
5.Undefined类型
Undefined(未定义)的值也只有一个就是undefined
当我们声明一个变量,但并不给变量赋值时,它的值就是undefined
注意未定义不是为声明!如果未声明应是下图所示结果:
我们在未声明b的情况下,在控制台打印b
所以未定义和未声明是两个概念!
当使用typeof检查undefined时返回的也是undefined
五个基本数据类型到此就全部结束啦!
指将一个数据类型强制转换为其他的数据类型
类型转换主要指,将其他的数据类型,转换为string Number Boolean
1.将其他类型数据转换为String
我们在控制台输出它的类型和结果,现在是number型那如何把它变成string类型,直接在a=111那里加引号可不可以?试一试
可以看到确实变成了string类型,但是这个不叫转换了,这是直接去修改了!
那用什么方法才能做到数据类型的转换呢?往下看。
方式一
调用被转换数据的toString()方法,严格注意大小写!!!!
简单来说就是被转换数据.toString()
那么这里就是调用a的toString()方法即a.toString() (调用xxx的yyy方法,就是xxx.yyy())
我们来试一试:
发现它跟之前没啥区别并没有成功转换,咋回事嘞?
注意该方法不会影响到原变量,它会将转换的结果返回!
所以我们要将执行结果赋值给其它东西,如下:
这里就成功转换成了string类型,或者直接让a=a.toString()也行
同样成功返回!
但是这种方法比较局限,往下看
我们知道null返回的类型应该是object,但是我们进行转换呢?
它报错了,既然null不行我们再来试试undefined
同样的报错了!
所以这里注意:null和undefined这两个值没有toString()方法,如果调用了他们的方法就会报错!
方式二
调用String()函数,并将被转换的数据作为参数传递给函数,如下所示:
那我们现在再来试试之前用方式一没转换出来的null和undefined
我们看到利用调用函数的方法我们成功将这两个的类型给转换了。
使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString()方法,但对于null和undefined就不是而是直接将null转换为"null",undefined转换为"undefined"
2.将其它数据类型转换为Number
方式一
调用Number()函数
成功转换。
那如果a = 'aaa’呢,引号里面不是数字而是字母会怎么样?
转成了NaN,不是一个数字。
所以这里注意:
字符串–>数字
1.如果是纯数字的字符串,则直接将其转换为数字;
2.如果字符串中有非数字的内容,则转换为NaN;
3.如果字符串是一个空串或者是一个全是空格的字符串,则转换为0;
**布尔–>数字
true转成1
false转成0
**
null转数字也是0
undefined转数字是NaN
我们看这样的一个例子数字和字母混合在一起的字符串该怎么转?
返回了NaN。怎么办?看方式二。
方式二
这种方式专门用来对付字符串
parseInt()把一个字符串转换为一个整数 (可以将字符串中有效的整数内容读取出来)
parseFloat()把一个字符串转换为一个浮点数
简单来说就是一读到不合法字符就结束。
如果以后想取整可以间接利用一下它
那我们要小数怎么办,就用parseFloat()用法和前面类似
如果对非String使用parseInt()或parseFloat()它会先将其转换为String,然后在操作
4.其它进制的数字
如果我们想在JS中表示16进制的数字要以0x开头
表示8进制数字,则需以0开头
如果要要表示2进制的数字,则需要以0b开头
但是不是所有的浏览器都支持
内置浏览器不知道输出了个啥,反正不对,我也没想到它还能输出出来,正常来说用内置浏览器运行会报错。
我们换火狐运行试一下啊!
等于2,这次对了!
看这次放到IE浏览器运行就报错了。
像"0xxx"这种字符串有些浏览器会当成8进制解析,有些会当成10进制解析.
对于这种情况我们使用parseInt()来进行第二个参数的传递,来进行一个统一的规定按照某个进制解析
3.转换为Boolean
只有一种方法使用Boolean()函数
转成布尔值只有两种情况true或者false
注意数字转布尔值除了0和NaN其它都是true
字符串转布尔值除了空串都是true
null和undefined都会转换为false
对象也会转换为true,后面学到了我会补充
运算符也叫操作符,通过运算符我们可以对一个或多个值进行运算。(运算符都是会返回结果的)
例如typeof就是一个运算符,它可以获得一个值的类型,它会将该值的类型以字符串的形式返回,返回的字符串是用来描述值的类型的。
算数运算符
当对非Number类型的值进行运算时,会将这些值转换为Number然后在运算(除了字符串的加法)
任何值和NaN做运算都得NaN
1.+ 对两个值进行加法运算,并将结果返回
这里我们看到它把true和false分别当成1和0进行运算
如果对两个字符串进行加法运算,则会做拼串,会将两个字符串拼接为一个字符串,并返回
任何的值和字符串做加法运算,都会先转换为字符串,然后再和字符串做拼串的操作
我们可以利用这一特点, 来将一个任意的数据类型转换为String我们只需要为任意的数据类型+ 一 个""(也就是空串)
这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用String()函数
这里还有一种写法是为了看清控制台输出的是什么。
比如我这里的111是字符,但在控制台看不出来。
利用这种写法我们就能在控制台看到”a = 111“的形式
2.- 可以对两个值进行减法运算,并将结果返回
注意只有字符串的加法会拼接,其它都是转换成number值运算,拼接只是加法运算里的特例
3.* 可以对两个值进行乘法运算,并将结果返回
4./ 可以对两个值进行除法运算,并将结果返回
**任何值做- * / 运算时都会自动转换为Number
我们可以利用这一特点做隐式的类型转换
可以通过为一个值 -0 *1 /1来将 其转换为Number
**
原理和Number()函数一样。
5.% 取模运算(取余数)
在上面我们说到的加减乘除都是二元运算符,在进行计算时,它们需要至少两个操作数,而一元运算符只需要一个操作数就行了。
+ 这里指的是正号,正号不会对数字产生任何影响
- 这里指的是负号,负号可以对数字进行负号的取反
如果a=布尔值或者字符串
这里注意:对于非Number类型的值,它会将先转换为Number,然后在运算
可以对一个其他的数据类型使用+,来将其转换为number它的原理和Number()函数一样
自增++
通过自增可以使变量在自身的基础上增加1
对于一个变量自增以后,原变量的值会立即自增1
自增分成两种:后++(a++)和前++(++a)
无论是a++还是++a,都会立即使原变量的值自增1
不同的是a++和++a的值不同
a++的值等于原变量的值(自增前的值)
++a的值等于新值(自增后的值)
这里我们用一个复杂点的例子来进行说明
为什么等于34,我们来分析一下,首先a=10,所以a++就等于原值即自加前的值也等于10,做完a++后a的值立刻自增1,此时的a不等于10了而是11,所以++a的值是11自增后的值即为12,做完++a之后a的值又立刻自增1,故此时的a值不等于11而是12,所以为10+12+12=34
大家细细感受一下,不要绕晕了。
自减 –
通过自减可以使变量在自身的基础上减1
自减分成两种:后–(a–)和前–(--a)
无论是a–还是–a都会立即使原变量的值自减1
不同的是a–和--a的值不同
a–是变量的原值(自减前的值)
–a是变量的新值(自减以后的值)
自减运算和自增差不多,对比着记忆一下,掌握了一个另一个自然就会了
大家可以自己设置几个数去运算尝试一下,看看能不能理清
时间过的真快,这次的总结到这又得结束了!
未完待续…
最近SQL注入攻击的学习笔记已经发布,感兴趣的看官可以移步我那篇文章,我将链接贴在下方,还望各位看官多多支持!
SQL注入学习笔记(一周一更)