js学习笔记吧
- 弱类型,都用var声明,可以随时改变变量所存数据的类型
- 逻辑欲火
true || 6; 逻辑或短路,左边为ture返回右值;
6 && true; 逻辑与短路,左边false返回右值;
- 形参和实参
定义函数时,function funcA(a,b,c){},其中的a、b、c即为形参;
调用函数时,funcA(1,2,3);其中的1、2、3即为实参;
-
短路运算
作用:防止传入函数的数据不足,造成无法运行;eg:
function getResult(a,b,fn) {
fn && fn();
}(通常使用逻辑与的短路来决定是否执行回调函数;)
function getResult_2(a,b){
a || 0;
}(通常用逻辑或的短路来防止实参不足的情况,强行赋值;) -
自执行函数
(function func2(){
})()
tips:在函数定义的结束最后写入一个(),该函数定义完成后直接被调用执行; -
(Math)数学对象
向上取整 Math.ceil(number);
向下取整 Math.floor(number);
四舍五入 Math.round(number);
求多个数字之间的最大值 Math.max();
求多个数字之间的最小值 Math.min();
求x的y次幂 Math.pow(x,y);
求正弦值 Math.sin(x);
example:
求一个角度的正弦值,要求x必须是一个额弧度值
角度和弧度的转换公式:
弧度 = 角度 * 2 * Math.PI / 360;
Math.sin(30*2*Math.PI/360)
Math.abs(x); 得到一个数字的绝对值
- 每行结尾的分号可有可无
- 注释
单行注释以双斜杠开头(//)
多行注释以单斜杠和星号开头(/*),以星号和单斜杠结尾(*/)
- 用同一个 var 语句定义的变量不必具有相同的类型
var test = "hi", age = 25;
- ECMAScript 关键字的完整列表 { 如果把关键字用作变量名或函数名,可能得到诸如 "Identifier Expected"(应该有标识符、期望标识符)这样的错误消息 }
break
case
catch
continue
default
delete
do
else
finally
for
function
if
in
instanceof
new
return
switch
this
throw
try
typeof
var
void
while
with
- ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String
Undefined 类型: 唯一值 undefined,未初始化(可以是声明的也可以是未声明的)
Null 类型: 唯一值null,尚未存在的对象,null == undefined--->true
- typeof xxx : 输出xxx的类型
- 八进制用0开头,十六进制用0x开头
- 特殊Number
Number.MAX_VALUE 参与运算的最大值
Number.MIN_VALUE 参与运算的最小值
Number.POSITIVE_INFINITY 值:Infinity,正无穷,只能是计算结果
Number.NEGATIVE_INFINITY 值 :-Infinity,负无穷,不能参与运算
NaN (Not a Number)
alert(isNaN("blue")); //输出 "true"
alert(isNaN("666")); //输出 "false"
isFinite() 判断是否无穷大
- 一元运算符
delete:删除对以前定义的对象属性或方法的引用,未定义的和系统原来的属性和方法不能删除
void:返回 undefined
前增量/前减量运算符: 先计算后赋值
后增量/后减量运算符: 先赋值后计算
- 位运算 (0 表示正数,1 表示负数)
位运算 NOT(~)
步骤:转成32位,生成反码,转化然后-1;
位运算 AND(&) :同1为1,其他为0
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
AND = 0000 0000 0000 0000 0000 0000 0000 0001
位运算 OR(|):同0为0,其他为1
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
OR = 0000 0000 0000 0000 0000 0000 0001 1011
位运算 XOR 由符号(^):不同为1,相同为0
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
XOR = 0000 0000 0000 0000 0000 0000 0001 1010
左移运算由两个小于号表示(<<):数字中的所有数位(保留符号位)向左移动指定的数量
有符号右移运算符由两个大于号表示(>>)
无符号右移运算符由三个大于号(>>>)负数将会变成很大的正数
-
false 转换成 0,true 为 1
-
等号和非等号 == ;!= .如果有数字,另一个转成数字;如果有字符串,另一个转成字符串,,,数字优先级高于字符串
-
全等号 === 。需要先比较类型,只有在无需类型转换运算数就相等的情况下,才返回 true。
-
for-in 语句 ,严格的迭代语句,用于枚举对象的属性,,PropertyIsEnumerable() 检验是否可以用for-in
-
switch ,,可以用于字符串,而且能用不是常量的值
-
函数不用写返回类型,而且reture不必在最后一句
-
arguments 对象
函数内接受参数的数组对象,可以判断实参个数及内容,长度小于等于形参,多余的舍去不要,少给的为undefinde
- 函数其实是一个功能完整的对象,可以作为参数传递给其他函数,有名字的函数可以作为数据传递给另一个变量,函数有length和toString等方法,length返回形参个数,toString()返回整个函数源码
- 用 new Function构造函数,
var sayHi = new Function("sName", "sMessage", "alert(\"Hello \" + sName + sMessage);");
前边是入参(必须是字符串),后边是函数执行
- 对象声明:var name= new 对象();如果没有参数可以省略();
- this , 指向调用该方法的对象
- 对象的属性和方法是动态的,可以在对象创建之后动态增加
var obj=new Object
obj.name="hello"
obj.eat=function(){
console.log("我要吃肉肉")
}
- 通过prototype可以给本地对象添加、修改、方法和属性
本地对象.prototype.方法名=function(){
}
- js脚本,逐行读取,不是预编译
- js 错误处理
try{
// 具体执行代码
}catch(error){
// 错误处理
}
if(false){
throw err
}
- DOM(document object model)
document.getElementById("id") ;通过id获取元素
document.write(); 左上角些东西
已知标签.innerHTML=""; 给已知的标签写或者修改东西
已知标签.属性名="" ;修改已知标签的对应属性值
// 通过已知标签获取子标签
var x=document.getElementById("main");
var y=x.getElementsByTagName("p");
// 修改样式
xxx.style.color='red'
- alert() 警告框,confirm(),确认提示框,prompt()提示框