js学习笔记吧

作者: 简爱WindMan | 来源:发表于2018-04-12 19:32 被阅读21次
    • 弱类型,都用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()提示框

    相关文章

      网友评论

        本文标题:js学习笔记吧

        本文链接:https://www.haomeiwen.com/subject/erezhftx.html