Javascript学习(一)
变量声明
通过关键字var、let、const来进行变量声明,这三种声明方式有区别,这里先不讲,后面会详情解释。由于js是一种弱类型语言,所以声明变量的时候并不需要指定类型。并且拥有动态类型(相同的变量可以拥有不同的类型)。
var a = ' zhangsan ' //字符串
var b = 1 //数字
var carname = new String;
var x= new Number;
var y= new Boolean;
var cars = new Array;
var person = new Object;
数据类型
数据类型主要分为两种:基础数据类型和引用数据类型,他们的主要区别在于存储方式有所不同,基础数据类型:直接在对应空间中存入值,引用数据类型: 存储的是一个地址,而这个地址指向的空间存储的是数据内容。
基础数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
注: Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
var a = 1
var b = '1234haudu'
var c = true
var d
引用数据类型
对象(Object)、数组(Array)、函数(Function)。
运算符
算术运算符
加: +
减: -
乘: *
除: /
求余: %
js在做小数运算的时候由于进制之间的转换没有那么精确会导致计算损失一些精度
1、保留几位小数
2、先转成整数,运算完了再除回来变成小数
var a = 20
var b = 30
console.log((a + b) * b)
console.log(a % b)
console.log(0.2 + 0.6)
console.log((0.1 *10 + 0.7 * 10) / 10)
console.log(0.1 + 0.7)
逻辑运算符
与:&&
或: ||
非: !
运算符优先级,但是太麻烦可以不用记,遇到了就加括号
var a = 5, b = 3;
console.log(a > b && a == b) // false
console.log(a > b || a == b) // true
console.log(b > 0 && b < a) // true
console.log(!(b < a)) //false
关系运算符
大于: >
大于等于: >=
小于: <
小于等于: <=
等于: == (只需要值相等即可) === (必须要值与类型全等)
不等: !==
var a = 5, b = 3, c = 5
console.log(a == b) // false
console.log(a != b) // true
console.log(a > b) // true
console.log(a >= b) // true
console.log(a <= c) // true
console.log(3 == '3') // true 只需要值相等即可
console.log(3 === '3') // false 全等:不仅值要相等,类型也要相同,更加推荐使用这个
类型转换
显式转换
通过es6提供的一些方法来主动进行数据类型转换
var str = '124x3.24343'
console.log(str)
// 遇到第一个小数点或者除数字以外的其他字符后半部分就直接舍弃
console.log(parseInt(str)) // 124 只保留整数部分
var str1 = '23.3y2.354'
// 遇到第二个小数点或者非数字字符就舍弃后半部分
console.log(parseFloat(str1)) // 23.3
// Number 只要不是数字规范的字符串结果就是NaN
// parseInt和parseFloat只有第一个字符就不是数字才会得到NaN
console.log(Number(str)) // NaN
隐式转换
通过逻辑运算等方式来进行转换
var a = 2, b = '3'
console.log(a + b) // a先隐式转换成字符串,再去加上b,完成字符串拼接,结果 23
console.log(b - 1) // b先隐式转换成数字3,再去减1,结果 2
console.log(b - 0) // 把字符串转换为数字类型, 结果 3
NaN(not a number)
NaN 的数据类型是一个number,是数字中的一个特殊值
console.log(typeof NaN) //number
// NaN不能拿来做比较的,NaN跟任意数据比较相等结果都是false
console.log(parseInt('abc') == NaN,parseInt('abc'),NaN) // false
// 判断NaN需要使用isNaN方法
console.log(isNaN(parseInt('abc'))) // true isNaN():判断是不是NaN
// NaN和任意数据运算结果都是NaN
console.log(NaN + 1) // NaN