zoukankan      html  css  js  c++  java
  • js基础 -函数

    函数

    定义

    var a =function (){...}; 匿名函数方式定义
    function a(){} 直接定义

    函数的参数
    arguments
    可以接收任意个参数,是个像数组的内容,可for in

    rest参数 es6新增

    function foo(a,b,...rest)
    这时候如果传入多于两个参数,后面的参数会合并成一个数组 rest,rest只能写在后面

    变量的作用域与解构赋值


    如果同名,以最内部的为主,外部函数使用外部的,

    变量提示,只提升声明,不提升值

    全局作用域 不在任何函数内部定义的变量就具有全局作用域 js 默认的 windows

    这说明JavaScript实际上只有一个全局作用域。任何变量(函数也视为变量),如果没有在当前函数作用域中找到,就会继续往上查找,最后如果在全局作用域中也没有找到,则报ReferenceError错误。


    名字空间

    不同的js文件,如果使用了相同的全局变量,会造成覆盖掉,减少冲突的一个方法是把自己所有的变量和函数全部绑定到一个全局变量中

    var myapp={}

    myapp.name='xx'
    myapp.fun=function(){
    ...
    }

    export myapp

    export 与 export default 的区别

    引入的时候不同 export 需要带{} import { 。。。} from ...

    export default 不需要 import xxx from xxxx

    变量 与常量

    let const


    解构赋值

    let [x, [y, z]] = ['hello', ['JavaScript', 'ES6']];

    如果忽略某几个元素 用逗号分开
    let [, , z] = ['hello', 'JavaScript', 'ES6'];

    对象的解构赋值,能快速取出对象中的某些属性
    let person={
    name:'xxx',
    sex:'xxx',
    age:'xxx'
    }
    let {name,age,sex}=person

    同样可嵌套

    var person = {
    name: '小明',
    age: 20,
    gender: 'male',
    passport: 'G-12345678',
    school: 'No.4 middle school',
    address: {
    city: 'Beijing',
    street: 'No.1 Road',
    zipcode: '100001'
    }
    };
    var {name, address: {city, zip}} = person;
    name; // '小明'


    注意,如果访问的属性不存在,会undefinded

    给值重命名

    var {name, address: {city:xxx, zip}} = person;
    这时候xxx==person.city

    指定默认值

    var {name, single=true} = person;

    注意:如果变量已经被声明了,就不能再解构了,Uncaught SyntaxError: Unexpected token =

    // 声明变量:
    var x, y;
    // 解构赋值:
    {x, y} = { name: '小明', x: 100, y: 200};


    方法 :在一个对象中绑定函数,称为这个对象的方法

    修复this 指向

    apply(this,[]),第一个是需要绑定的this变量,及谁能调用的了他,第二个为函数本身的参数


    call(this,arg1,arg2),区别就是把参数打散一个个传


    注意 对普通函数调用,我们通常把this绑定为null。

    因此 parseInt.apply(null,arguments) 与普通的parseInt 功能一样


    装饰器

    var count = 0;
    var oldParseInt = parseInt; // 保存原函数

    window.parseInt = function () {
    count += 1;
    return oldParseInt.apply(null, arguments); // 调用原函数
    };

    这个函数的作用就是改写了parseInt 函数,给他增加了一个调用计数的功能

  • 相关阅读:
    mkdirp——递归创建目录及其子目录
    rimraf命令 递归删除目录所有文件
    前端面试总结——http、html和浏览器篇
    meta标签
    多行文本溢出显示省略号
    ui-sref
    Angular组件之间通讯
    定义路由的state参数
    angularjs中factory, service和provider
    Oracle Spatial分区应用研究之五:不同分区粒度+本地空间索引效率对比
  • 原文地址:https://www.cnblogs.com/cytheria/p/10740688.html
Copyright © 2011-2022 走看看