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 函数,给他增加了一个调用计数的功能
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python爬虫:无账号无限制获取企查查信息
- Spark Streaming——Spark第一代实时计算引擎
- bamtools分割bam文件
- 在genome browser中添加自己的注释文件
- 原理+代码|Python基于主成分分析的客户信贷评级实战
- Python办公自动化 | 从PPT到Word
- linux命令行参数getopts参数二选一
- 黎巴嫩首都爆炸能量有多大?物理学家看视频计算:300吨TNT!
- OracleDG 环境主备业务数据不同步备库报ORA-600错误的处理过程
- Xcode清理模拟器文件
- 【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】六、FFmpeg简单合成MP4:视屏解封与重新封装
- 32.opengl高级光照-延迟着色法
- Tsunami:一款功能强大的通用网络安全扫描工具
- Hive查看表/分区更新时间
- 直接通过手机抓取GPS的qxdm日志