js第二学习
//
前面重点知识点回顾与:
1 js三大组成部分:ECMAScript + BOM(browser object model) + DOM(document object model)
// 2 三种输出语句 弹出输出:alert() 页面输出:document.write() 控制台输出:console.log() 注意只有页面输出识别标签
// 3 声明变量 var
// 4 变量的命名规则
// 由字母+数字+下划线组成 + $
// 数字不能开头
// 不能使用关键字和保留字
// 语义化,见名知意
// 建议使用小驼峰或者组合命名
// 5 基本数据类型 number string boolean null undefined
// 判断数据类型的方法 typeof
// null 空对象 属于object
// 面试题 typeof typeof 任何值 string
// 6 = 赋值 == 值等 === 全等(值和数据类型)
// 7 4>3>0 true->1 false->0
// 8 交换两个变量的值
var x = 1 , y = 2 ;
// 声明一个变量
var z ;
z = x ;
x = y ;
y = z ;
// x = y ;
// y = x ;
// console.log(x);
// console.log(y);
逻辑运算( 与&& 或|| 非!)
&&是所以条件必须同时满足
||只要有一个条件满足即可
!取反
逻辑短路
或|| 见真即为真(满足条件将停止执行)
与&& 见假即为假(满足条件将停止执行)
// 4 > 3 > 2 错误 先是4和3比对为 4>3 结果为true(1)>2 就为假;
console.log((4 > 3) && (3 > 2)) ; // true
// 比较运算符的优先级高于&& , 所以不用加括号
console.log(4 > 3 && 3 > 2) ;
console.log(4 > 3 || 3 < 2) ; // true
console.log(4 > 5 && 6 > 5) ; // false
var n = 4 ;
// 判断这个数是否能同时被3和7整除
// 整除 :余数为0
// n % 3
// n % 7
// n % 3 === 0
// n % 7 === 0
console.log(n % 3 === 0 && n % 7 === 0) ;
console.log(2 == 3) ;
console.log(2 != 3) ; // 值不相等
console.log(2 !== 3) ; // true // ===值和类型相等 !== 值或类型不相等
// console.log(2 !=== 3) ;
var a = true ;
var b = !a ;
console.log(!(a === true)) ; // false
console.log(!a === true) ; // false
运算符的优先级
//()
// ++ --
// !
// * / %
// + -
// > < >= <=
// == === !== !=
// &&
// ||
// = += -= *= /= %=
<-----------------自增运算------------->
// 自增 ++a a++
// 赋值运算
// age = age + 1 ;
// age += 1 ;
// age++ ;
var age = 18 ;
// age = age + 1 ;
// age += 1 ;
// age++ ;
// ++每次只自增1
var n = age++ ;
console.log(n) ; // 18
// 要加2的话还是要像这么写
// age += 2 ;
var a = 1 ;
// ++ 在后面的时候,先运算,后自增
// var b = a++ ; // b 1
// var b = a ; // 先运算
// a = a + 1 ; // 运算完之后再自增
// var c = a++ + 1 ;
// console.log(c) ; // 2
// console.log(a) ; // 2
// var d = a++ + a++ ;
// console.log(d) ; // 3
// console.log(a) ; // 3
// var e = a++ + a++ + a++ ;
// // 表达式 1 + 2 + 3 6
// // a的值 2 3 4
// console.log(e);
// console.log(a);
// ++在前面的时候,先自增,再运算
var m = 1 ;
// var n = ++m ;
// m = m + 1 ;
// n = m ;
// console.log(n) ; // 2
// var n = ++m + ++m ;
// // 表达式 2 + 3
// // m的值 2 3
// console.log(n) ;
// console.log(m) ;
// var n = m++ + ++m ;
// // 表达式 1 + 3
// // m的值 2 3
// console.log(n);
var n = m++ - --m + m-- + ++m ;
// 表达式 1 - 1 + 1 + 1
// m的值 2 1 0 1
console.log(n); // 2
console.log(m); // 1
var x = 1 ;
// var y = ++x ; // 2
// var z = x++ ; // 2
console.log(x++) ; // 1
console.log(++x) ;
拼接运算
// + 求和;正数 拼接
// var a = +1 ;
// 实现字符串的拼接
var a = 'hello' + 'hi' ;
console.log(a) ;//hellohi
var b = '1' + '2' ;
console.log(b) ; // 12 字符串拼接
var c = 'hi' ;
// document.write('我想打印c的值');
// document.write(c) ;
document.write('我想打印c的值:' + c);//我想打印c的值:hi
// 345 分钟和秒
var s = 345 ;
var sec = s % 60 ; // 45
var m = (s - sec) / 60 ; // 5
document.write(s + '秒等于' + m + '分钟' + sec + '秒') ;
// var c = 1 + '1' ; ???//11为string类型
// 0.1 + 0.2 === 0.3 ???
0.300000000004因为在计算机计算过程中会把数转换为二进制进行计算,但是0.1转为二进制一直循环难以表达所以会丢失精度.
var k = 2 ;
var d = k++ + k-- * 2 + ++k ;
// 2 + 6 + 3
console.log(d); // 11
数据类型的相互转换
// null -> object
// typeof
// typeof typeof 值 为 string 类型
// 交换变量的值
// 逻辑 && || !
// 短路 && 见假即为假 || 见真即为真
// 同时3和7整除 n % 3 === 0 && n % 7 === 0
// 数据类型的相互转化
// 强制转化
// 隐式转化
// 需要一个年龄 数字
// 后端传一个数据 '20'
var n = '20' ;
// 强制转化
// 其他类型转数字 Number()
// 字符串转成数字
// 纯数字字符串 , 成功的转成对应的数字
// 非数字字符串 -> NaN
// 空字符串和空格字符串 -> 0
// 布尔值转成数字
// true -> 1
// false -> 0
// null -> 0
// undefined -> NaN 因为undefined是未定义的值我们也不清楚它的值为什么,所以在转换的过程中就为NaN了
NaN not a number NaN是一个非数字的集合,不和任何值相等包括它自己,它不参与任何计算
NaN是怎么形成的
在进行我们的加法运算时,输出结果就不会出现NaN,如果有字符串的出现,就会出现我们的字符串拼接。
2.若有NaN参与运算时,此时的结果就会输出NaN。
// 其他类型转字符串 String() 全部相当于加了引号
// 其他类型转成布尔值 Boolean()
// 0和NaN -> false
// 空串 -> false 空格字符串 -> true 空串='' 空字符串=' '里面是有空格的
// null -> false
// undefined -> false
var m = Number(n) ; // 大写的时候 -- 构造函数
console.log(m) ;
var x = Number('') ;
console.log(x) ; // 0
var x = Number(' ') ;
console.log(x) ; // 0
console.log(Number(true)) ; // 1
console.log(Number(false)) ; // 0
console.log(Number(null)) ; // 0
console.log(Number(undefined)) ; // NaN
console.log(String(1)) ;//1
console.log(String(NaN)) ;//NaN
console.log(String(true)) ;//true
console.log(String(null)) ;//null
console.log(String(undefined)) ;//undefined
console.log(Boolean(NaN)) ;fasle
console.log(Boolean(' ')) ;//true
console.log(Boolean(null)) ;//false
console.log(Boolean(undefined)) ;//false
console.log(null == undefined) ; // true
console.log(null === undefined) ; // false
// null 和 undefined 区别
// null == undefined null !== undefined
// null和undefined都转布尔值false
// null转数字0 undefined转数字NaN
// null 空对象(也是一种值) , undefined 已声明但是没有值
关于NaN
// NaN:not a number 不是一个数字
var a = 1 ;
var b = 1 + 1 ;
var c = 1 / 0 ; // 除数不能为0
console.log(c) ; // Infinity 无穷
console.log(typeof c) ; // 数字类型 number
var d = Infinity ;
console.log(typeof d) ;//number
var e = 1 / 'a' ;
console.log(e) ; // NaN
console.log(typeof e) ; // number
// 数字类型
// 常规数字
// Infinity 无穷
// NaN 非数字的集合 , 它不和任何值做比较,包含自己
// isNaN() 用于判断是不是NaN 得到的是布尔值
console.log(1 === 1) ;//true
console.log(undefined === undefined) ;//true
console.log(null === null) ;//true
console.log(NaN === NaN) ; // false
console.log(NaN > 1) ; // false
var x = 20 ;
var hou_duan = 10 ;
// console.log(hou_duan === NaN) ; // false
// isNaN() 用于判断是不是NaN --- 布尔值
var result = isNaN(hou_duan) ;
console.log(result) ; // true
隐式转化
var a = 1 ;
var b = '1' ;
var c = a + b ; // 隐式转化只是在计算的时候,转化了值,没有转化变量
console.log(typeof a) ; // a不会发生改变
// 变量只会通过赋值发生改变!!!!!!
浮点数
// 计算机进行计算的时候 二进制的计算
// 在计算浮点数的时候,会出现精度丢失的情况
// 在浮点数进行计算的时候,可以把数字放大成整数,然后缩小
// 数字过大的时候,可能出现计算失误 9999999999999999 == 10000000000000000
console.log(0.1 + 0.2) ; // 0.300000000000004
// (1 + 2) / 10 = 0.3
console.log(0.1 + 0.3) ;
console.log(0.2 + 0.3) ;
console.log(0.1 + 0.7) ; // 0.7999999999999999
// 3.33 四舍五入
// 10 / 3 = 3.3333333333333333333333333333333333333333
console.log(10 / 3) ;
转数字的方式
var a = '2' ;
a = Number(a) ;
// 隐式转化之后,需要赋值
a = a * 1 ;
a = a / 1 ;
a = a - 0 ;
// a = a % 10000 ;
var b = 0.300000000000004 ;
// toFixed(n) 四舍五入的保留小数点后n位数
// 注意:此方法实际上是字符串方法(也就是说结果其实是字符串)
b = b.toFixed(1) - 0;
console.log(b) ;//0
var age = '20.5.5岁' ;
// 取整 parseInt() 从第一位数字开始截取,到遇到第一个非数字结束,如果截取不到就得到NaN
//parseInt的隐式转化:参数一般为字符串如果不为字符串的话会将它自动转换为字符串然后在进行截取
,如果前面是有数字的话就将前面的数字截取下来转化为数字如果不是的话就为NaN;
// 取浮点数 parseFloat() 从第一位数字开始截取小数,到遇到第一个非数字结束,如果截取不到就得到NaN
// parse int整数 float浮点数
// age = parseInt(age) ;
// console.log(age) ; // 20
age = parseFloat(age) ;
console.log(age) ; // 20.5
var c = '2' ;
c = parseInt(c) ;
console.log(typeof c) ;

浙公网安备 33010602011771号