函数

定义

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 函数,给他增加了一个调用计数的功能

js基础 -函数的更多相关文章

  1. JS基础——函数的创建和使用

    在JS中函数在使用时实质上和我们平时学习的编程语言中的函数类似,它相同也具有函数名,參数,返回值,函数体等这些寻常函数所具有的内容.可是作为一种脚本语言,它确实也有自己不一样的地方. 一.创建 < ...

  2. JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象

       前   言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...

  3. JavaScript基础一(js基础函数与运算符)

    [使用js的三种方式] 1.在HTML标签中,直接内嵌js(并不提倡使用) <button onclick=" alert('点就点')"> 点我啊</butto ...

  4. js基础-函数基础

    js 先对函数进行解析 然后在执行函数 定义一个函数 实现求两个数的乘 function mult(a,b){ return a*b; } mult(1,3) 计算1 - n 的和 封装成函数 fun ...

  5. js基础-函数-var和let的区别

    javaScript简介 javaScript历史 1995年,Netscape公司是凭借Navigator浏览器成为当时第一代互联网公司. 网景公司希望在HTML界面上加一点动态效果,于是叫Bren ...

  6. JS基础函数

    函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块 <script> function demo(){ var a = 10; var b = 25; var sum = a + ...

  7. js 基础 函数传值

    让我忽略的函数传值问题 function box(num){ num += 10;  // num(有色的num) 实际就是arguments[0] ,如果参数没有num,则函数体的num(有色的nu ...

  8. js基础——函数

    1.函数声明:通过函数可封装任意多条语句,且可在任意地方.任何时候调用执行. eg. function box(){//无参函数      alert("只有函数被调用,我才会被执行&quo ...

  9. JS基础-全方面掌握继承

    前言 上篇文章详细解析了原型.原型链的相关知识点,这篇文章讲的是和原型链有密切关联的继承,它是前端基础中很重要的一个知识点,它对于代码复用来说非常有用,本篇将详细解析JS中的各种继承方式和优缺点进行, ...

随机推荐

  1. C++设计模式——命令模式

    什么是命令模式? 在GOF的<设计模式:可复用面向对象软件的基础>一书中对命令模式是这样说的:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以 ...

  2. 搬运,B站up主『凉风有性胖次君』日日日日日日日日日日在校园

    这个视频超有毒,简直丧心病狂,我竟无言以对,凉风是有多大的耐性,搜集了这么多元素,哈哈哈~~~赶紧搬运,怕哪天B站都给封了 也就是说世界本来喜欢的是言叶,但是言叶爱上了一直在电车上暗恋她的诚哥,于是世 ...

  3. Linux su切换用户后命令提示符变为bash-4.2$

    2018-9-30 19:31:41 星期日 今天遇到一个问题, 给gitlab配置webhook的时候, 一个目录总是不能正确执行git pull 命令, 无任何输出, 根据之前经验, 感觉是权限的 ...

  4. Gathering Fingerprinting

    1. Banner grabbing with Netcat Netcat is multipurpose networking tool that can be used to perform mu ...

  5. 关于CentOS

    dd if=/dev/cdrom of=centos72.iso 自动挂载镜像: vi /etc/fstab /root/centos72.iso   /mnt/cdrom   iso9660  de ...

  6. session简介与生命周期

    session简介 在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间以及如果需要的话,可能还有一定的操作空间. 具体到 ...

  7. Java集合实现

    set: public class BSTSet<E extends Comparable<E>> implements Set<E> { private BST& ...

  8. mybaits返回自增主键ID

    mybaits两种获取自增主键ID的方法:一种是使用useGeneratedKeys,第二种是selectKey方法获取. useGeneratedKeys <insert id="i ...

  9. 这篇文章主要介绍了Citrix XenServer 6.1 安装图解教程

    本次为使用VirtualBox虚拟机过安装测试机过程,我们在使用Vm(无论是Vbox还是VMware等)我们的CPU都必须可支持Intel-V或AMD-V,并且在VM软件设置和BIOS设置开启虚拟化支 ...

  10. python接口测试-认识GET请求

    前边用工具也实现了接口自动化,但是后来很多的时候维护成本有点高.而且灵活上还是有所欠缺的. 于是,自己开始摸索学习敲码.应该有很多不对的地方或者可以优化的望各位大神勿喷,同时欢迎各位大神评论区发表自己 ...