取摸(求余数)
var list = document.querySelector('.list');
var lis = list.querySelectorAll('li');
var colors = ["red","blue","yellow"]
for(var i = 0; i < lis.length; i++){
// if(i%2 == 1){
// lis[i].style.background = "red";
// } else {
// lis[i].style.background = "pink";
// }
lis[i].style.background = colors[i%colors.length];
console.log(i%colors.length);
}
三目运算符
console.log(1<2?1:2);
数据类型
var a = Symbol();
var b = Symbol();
console.log(a == b);
/*
标准划分:
基本类型:
number (数字类型)
string (字符串类型)
boolean (布尔值 true false)
null (空,空对象)
undefined (未定义)
symbol (Symbol(),ES6新增)
复合类型:
object (window,元素,数组,function,对象)
Symbol() 一个匿名且唯一的一个值
*/
typeof
/*
typeof 验证数据类型:
number 数字
string 字符串
boolean 布尔值
undefined 未定义
function 函数
object 对象类型
symbol symbol类型
*/
//var a = 0; // number 数字
var a = Symbol();
console.log(typeof a);
数字的取值范围
console.log(Number.MIN_VALUE);
/*
Number.MAX_VALUE
Number.MIN_VALUE
Infinity 正无穷
-Infinity 负无穷
*/
未定义
var a;
console.log(a);
console.log(window.b);
console.log(a == null);
对象
var arr = [1,2,3,4];
var obj = {
name: "妙味",
age: 10
};
obj.boss = "leo";
console.log(obj,obj.name);
数据类型转换
var div = document.querySelector('div');
div.onclick = function(){
var width = this.style.width;
width += 10;
console.log(width);
this.style.width = width;
};
数据转换的整理资料
Number
var a = [true];
console.log(Number(a));
/*
Number(val)
1. 数字,原样返回
2. 字符如果符合数字的规范就转换否则返回NaN
3. true 为 1,false 为 0
4. null 为 0
5. undefined 为 NaN
6. 对象转换数字,先调用对象的 valueOf() 再调用对象的 toString(),然后按照上边的规则进行转换
NaN 数字中的一个特殊值
1. NaN not a number 这不是一个数字
2. NaN 的数据类型是数字
*/
对象下的两个方法
var arr = [0,1,2];
console.log(arr.valueOf().toString());
NaN
var a = "a";
console.log(NaN == NaN);
/*
NaN:
1. NaN 数据类型是数字
2. NaN 本身的含义表示这不是数字
3. NaN 不等于任何值,并且不等于它自己
*/
isNaN
var a = "12.2a";
console.log(isNaN(a));
parseInt
var a = "a 12px ";
console.log(parseInt(a));
parseFloat
var a = true;
console.log(parseFloat(a));
String
var a = {m:1};
console.log(String(a));
Boolean
/*
Boolean(val) 转换成布尔值
1. 数字类型转换布尔值
0 转成 false,非0 转换成 true,NaN 转换成 false
2. 字符串
"" 转换成 false, 非空字符串转换成true
3. undefined false
4. null false
5. 对象 转换成 true
*/
强制类型转换和隐式类型转换
var a = 0;
var b = "1";
console.log(a - b);
运算符和赋值运算符
/*
算术运算符
+ 加、- 减、* 乘、/ 除、% 取模(求余数)、++、--
赋值运算符
=、+=、-=、*=、/=、%=
*/
/*
除了 + += 其他所有的运算符只能进行数字运算,所以遇到非数字,会转换成数字进行运算
*/
var a = undefined;
var b = null;
console.log(a + b);
/*
+=,+ 数字运算,字符串连接
1. 如果两边都是数字,进行数字运算
2. 如果 一边是否字符串,就把另一边转换成字符串进行连接
3. 如果是布尔值转换成数字进行运算
4. 如果是对象 就先调用对象的 valueOf 方法,然后调用对象的toString() 转成字符串之后,然后进行字符串连接
5. 如果一边数字或null,一边undefined 返回NaN,其余情况 undefined 都转换字符串进行连接
6. null 先转换成数字,然后进行计算
*/
关系运算符
//console.log("1" < 1);
console.log("a" != "A");
/*
关系运算符:
<、>、<=、>=、==、!=、===、!==
<、>、<=、>=
1. 如果两个值都是数字,则进行数字比较
2. 如果两个值都是字符串,则比较字符串对应的 Unicode 码
3. 如果一个值是数字,则将另外一个值转成数字进行比较,转换规则参照 Number() 方法
4. 如果一个数是对象,则调用valueOf()方法然后调用 toString方法,得到的结果按照前面的规则执行比较
5. 如果一个值是布尔值、null、undefined 则将其转换为数值,再进行比较
6. 最后注意 NaN,NaN 不等于任何值,所以直接返回false
== 等等、!= 不等
1. 有 NaN 时,直接判定两侧不相等
2. 两侧都是数字时,直接比较数字大小
3. 两侧都是字符串时,直接比较字符串是否相同
4. 两侧都是布尔值时,直接比较值是否相同
5. 两侧都是对象时,比较两个对象的引用地址是否相同
6. undefined ,null 在比较的时候只等于自己和其他任何类型都不相等,但是 undefined 等于 null
7. 如果一个值是布尔值时,先把布尔值转成数字再比较
8.一个值是字符串,一个是数字时会调用 Number() 转出数字再进行比较
9.如果一个值是对象,先调用valueOf()方法,然后调用 toString 方法,输出字符串,然后再参照以上规则比较
===、!== 不会进行类型转换,如果左右两侧的类型不同,会返回两边不等
1. 两侧都是数字时,直接比较数字大小
2. 两侧都是字符串时,直接比较字符串是否相同
3. 两侧都是布尔值时,直接比较值是否相同
4. 两侧都是对象时,比较两个对象的引用地址是否相同
*/
Unicode
var a = "A"
alert("a" < "A")
传值 和 传址
var a = 0;
var b = a;
b = 3;
console.log(a);
var c = [2];
var d = c;
d[0] = 4;
console.log(c);
逻辑运算符
// var a = 0;
// console.log(!a);
/*
逻辑运算符
&& 与、|| 或、! 否 、三目运算符
! 否 取反
碰到非布尔值类型的数据,会调用 Boolean,转换成布尔值之后,再进行计算
三目运算符
条件语句?成立的结果:不成立的结果
1.条件语句中的运算结果,不是布尔值的话,就转成布尔值
2. 条件语句 如果返回 true 就返回 成立的结果 否则 返回不成立的结果
&& 与 (并且)
1.第一位是布尔值的 true 时,返回第二位的值,例如:true&&1 返回 1
2. 第一位是布尔值的 false 时,直接返回 false
3. 第一位不是布尔值,则调用Boolean()进行转换,如果转换的结果为 true 则返回第二个值,否则,返回第一位的值 (注意:是值不是转换后的 false)
4. 如果有一个值为 null,返回 null
5. 如果有一个值为 NaN,返回 NaN
6. 如果有一个值为 undefined,返回 undefined
|| 或者
如果第一个值经Boolean()转换后为false,则返回第二个值,否则返回第一个值 (注意:是值不是转换后的 true)
*/
// var a = 0;
// var b = 3;
// if(a < b
// || a == 0){
// console.log("执行语句");
// }
//console.log(0&&2);
console.log(0||null);
运算符优先级
var a = 0;
var b = 1;
var d = 2;
var c = d*(b + a + b) + (a - b);
console.log(c);