函数

定义

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. Fast RCNN 中的 Hard Negative Mining

     Fast RCNN 中将与 groud truth 的 IoU 在 [0.1, 0.5) 之间标记为负例, [0, 0.1) 的 example 用于 hard negative mining. ...

  2. 初学python之路-day04

    每天一篇总结,今天学习的是有关于流程控制的知识. 流程控制,顾名思义,在计算机运行中,程序是被某种控制方式按照某种流程或者规律来执行的.而python程序的运行,肯定也是按照某种规律在执行.这些规律可 ...

  3. 初学python之路-day01

    第一天学习python,先了解到了进制之间的转换关系. 如二进制与十进制的转换,如1111转成十进制为15,1111从左向右可看出2^3+2^2+2^1+2^0为8+4+2+1=15.记住前8位1的二 ...

  4. linux 安装telnet命令及使用

    一.CentOS下查看系统是否已安装telnetrpm -qa | grep telnettelnet-0.17-48.el6.x86_64telnet-server-0.17-48.el6.x86_ ...

  5. 利用python打印字符

    python unicode ('你好','UTF-8') print u'\u4f60\u597d'

  6. oAuth2授权协议 & 微信授权登陆和绑定 & 多环境共用一个微信开发平台回调设置

    OAuth2(open Auth)开放授权协议 授权码模式流程: 1.浏览器(客户端)点击一个比如使用微信登陆按钮 2.会跳到认证服务器页面,让用户选择是否授权 3.如果用户点击授权,那么会跳转到开始 ...

  7. lnoi2019游记

    好诡异的省选...... day0: 莫名其妙的订了下午从sy到dl的火车,得五点多才能到,所以.......是不需要试机的吗...... 好吧... 看着停课的jflr们,感觉他们好强啊,像我这种酱 ...

  8. SQL SERVER 打开脚本报“未能完成操作,存储空间不足”

    使用用SQLCMD命令行. 1.快捷键:win+R 2.输入cmd​,确定 3.输入命令:sqlcmd -S <数据库服务器名称> -i C:\<脚本文件路径>.sql 例:s ...

  9. (三)ajax请求不同源之websocket跨域

    WebSocket是一种通信协议,使用ws://(非加密)和wss://(加密)作为协议前缀.该协议不实行同源政策,只要服务器支持,就可以通过它进行跨源通信. 一.WebSocket目标 在一个单独的 ...

  10. Build Tools

    构建工具能够帮助你创建一个可重复的.可靠的.携带的且不需要手动干预的构建.构建工具是一个可编程的工具,它能够让你以可执行和有序的任务来表达自动化需求.假设你想要编译源代码,将生成的class文件拷贝到 ...