console.log()效果是输出,实际表示打印
注释//注释一行
/*balabala*/注释一段
同一行加分号以分割多条语句
简单数据类型:undefined,(空变量)(不可做变量名)
null,(空对象)(不可做变量名)
boolean,
number,
srting
复杂数据类型:对象object{a:s,a:s,a:s}
数组[a,a,a]
括号优先级由内向外
var a=3.1415926; a = a.toFixed(2);//保留2位但结果为一个String类型,不能进行计算 a = parseFloat(a);//将结果转换会float //用一步的话如下 a = parseFloat(a.toFixed(2));
对象转换成数组后输出
var info={a:1,b:2} info.a='1' info.b='2' var new = JSON.stringify(info) console.log(new)
对象的属性名可以是标识符,字符串,数值
属性值可以是任意的数据值,对象,函数
name = stu['name']
可以用于动态取值,[ ]内可以加变量(数组名[i])或者字符串
可以通过变量传递我要访问的属性名
【var stu = {name:1,age:2}(键值比)
。。。
。。。
var sch = {name:1,age:2}
function get_value(data,value){
return data[value]
}
get_value(sch,name)】
动态的传递对象中的属性键值(在合理定义变量名字时便于取值)
【若传递的属性值为函数,则输出内容不执行函数】
condition ? expre1 : [align=center][/align]expre2;
true ->1
false->2
【prompt:弹出窗口】
+=i 等于(自身加i)
-=
*=
/=
%=
for 循环
循环内的变量可以不加定义,但是循环内的变量不加定义则作用域变为全局,会被上下文修改
if 判断
&&与
||或
!非
数组 数组名[]
数组赋值push
var arr=[];
arr.push('字符串',team);把字符串和team代表的值加入数组中
若push数组A中的某元素进入数组B之后,不会改变数组A
空字符串 字符串名字=''
*.length 只能用于表示数组长度
【var a=Object.keys(对象名) 打印时输出对象的所有属性名
a.length 打印时输出对象长度】
函数返回值,调用函数内的运行结果,同时结束函数、循环 return表示结束;
不加返回值时,函数内的console.log在调用函数后正常执行;
返回多个值时需要把多个值组合成数组【或者对象?】
函数名(参数列表){代码块}
父级作用域不能访问子级作用域内的变量;子级作用域可以访问父级作用域的变量
但js中for(){} ;if(){}后的{}不看做块级作用域
在判断区域【如if后面的小括号里】内,判断something是否存在,可以在定义前进行分流如
var inputs = ['ITEM000001','ITEM000001','ITEM000001','ITEM000001','ITEM000001',] var info = {} inputs.forEach(function(value){ if(info[value]){ info[value]++ }else{ info[value] = 1 } })
所谓可以访问即是读取或修改
子作用域覆盖(子作用域有变量与父作用域变量重名时,子作用域里只能访问子作用域的变量)
var x = 0; function fun(){ console.log(x); var x = 1; x++; return x } fun();
先执行输出但父级变量已被覆盖,只不过被盖住还不知道是什么,因此输出为undefined,之后揭晓x的值与运算,代码执行的先后顺序(由上而下,由左至右)
A in B(对象名)
in 操作符用以确认 A 是否是 B 内的属性名
JavaScript 使用下列规则将非布尔值转换为布尔值:
1.所有对象都被视为 true。
2.当且仅当字符串为空时才被视为 false。
3.null 和未定义被认为是 false。
4.当且仅当数字为 0 时才为 false。