zoukankan      html  css  js  c++  java
  • js学习笔记


    javacript笔记
    根据EC5.0
    一共有六种数据类型:
    number,string,bool
    undefine,null
    object(广义的) --->object(狭义的),array,function

    前五种叫primitive type,最后一种是complex object
    三种判断对象类型的方法:
    typeof,instanceof,Object.prototype.toString

    typeof 前三类型就是基本类型
    typeof undefined 是undefined
    typeof null 是 object //因为历史的原因,为了兼容以前的代码,并不表示null是对象
    typeof [] 是object

    null和undifined的区别:
    null表示空值
    undefined表示不存在值

    实际上,所有数据,都可以被看作广义的对象,或说用对象方式调用
    var s = new String("123");//s是object
    这六个值是false:undefined,null,0,"",false,NaN

    自动分号添加:javascript引擎

    错误类型:
    最一般的错误类型Eooro
    六种错误类型
    SystaxError
    Reference Error
    RangeError
    TypeError
    URIError
    EvalError //EC5中不再出现

    函数:
    三种声明函数的方法
    1、function命令
    function print(s) {
    console.log(s);
    }
    2、函数表达式 赋值变量
    var print=function(s){
    console.log(s);
    }
    function后不应加函数名,如果加了,只在函数内部有效
    3、Function构造函数 //很少人使用
    var print=new Function("s","console.log(s)"); //最后一个参数是函数体,之前的参数如果存在,则是函数的参数
    var print=Function("s","console.log(s)");

    作为第一等公民:函数可以作为其他数据类型一样使用,如可以将函数名赋值给变量和对象的属性,也可以当作参数传入其他函数,或者作为函数的结果返回。也因此,函数会像变量声明一样,获得提升。
    使用赋值变量的方式声明函数,会导致,先声明,后赋值。也就是说,变量是提升了,但还未赋值。 因此,当同一个函数使用function命令和变量赋值的方式同时声明的话,js引擎总是会认定赋值语句的定义。
    var f = function() {
    console.log('1');
    }

    function f() {
    console.log('2');
    }

    f() // 1

    按照ECMA规范,不能在非函数中声明函数,但实际傻瓜,很多浏览器可以运行。但又因为变量提升,本意图使用条件语句判断是否声明,实际上没有效果。因此,要达到条件语句的效果,只能使用函数表达式

    函数的属性:
    name:函数的名称
    length 函数的参数个数

    作用域:
    区块block本身不构成作用域,因此{}只是用于for,if,while,function等语法结构
    因此,作用域只分为两种:全局作用域和函数作用域。

    函数作用域内的变量会覆盖全局变量
    函数作用域内的变量也同样存在变量提升的现象
    函数的参数可以省略,若省略,则其值为undefined

    关于传值和传址:
    在C#中,如果传递的参数是原始类型(int,float等)或结构体(struct),那么就是传值调用。
    如果传递的参数是类(class)那么就是传引用调用。(但是当函数内部给对象整体做改变时,那么,仍旧是传值)
    如果传递的参数前有ref或者out关键字,那么就是传引用调用。
    在JS中,前两条同样成立。当然,这里的对象是指广义的,即包括对象,函数和数组。

    arguments[]对象包含了函数运行时的所有参数
    但是arguments虽然很像数组,其实不是数组,而是对象- -! 因此数组的方法如slice和foreach
    slice(i,j)方法,如果是数组使用,则从i位置,切割到j位置,返回新的子数组,原先的数组不变。
    如果是string使用,也是返回一个新的子字符串,原先的字符串不变。

  • 相关阅读:
    [linux]w命令和uptime命令查看系统负载
    Gherkin关键字
    Navicat Premium常用快捷键
    linux如何手动释放linux内存
    IDEA报compilation failed:internal java compiler error解决方法
    App功能测试的7大注意点
    手术切口类别
    JAVA中关于Map的九大问题
    Web前端开发规范文档
    Java6 WebService的发布
  • 原文地址:https://www.cnblogs.com/Benjamin/p/5001423.html
Copyright © 2011-2022 走看看