JavaScript标准教程
来源:互联网 发布:成立子公司的好处知乎 编辑:程序博客网 时间:2024/06/11 23:33
//1.参数的省略
//正确写法:
function f2(a) {
//上面代码的||表示“或运算”,即如果a有值,则返回a,否则返回事先设定的默认值(上 例为1);这种写法会对a进行一次布尔运算,只有为true时,才会返回a。可是,除了undefined以外,0、空字符、null等的布尔值也是false。也就是说,在上面的函数中,不能让a等于0或空字符串,否则在明明有参数的情况下,也会返回默认值。
a = a || 1;
return a;
}
f(''); //1
f(); //1
//精确写法:
//变量p是一个原始类型的值,传入函数f的方式是传值传递。因此,在函数内部,p的值是原始值的拷贝,无论怎么修改,都不会影响到原始值。
var p = 2;
function f(p) {
p = 3;
}
f(p); //这里p的值是2
//函数参数是复合类型的值(数组、对象、其他函数),传递方式是传址传递(pass by reference)。也就是说,传入函数的原始值的地址,因此在函数内部修改参数,将会影响到原始值。
var obj = { p: 1 };
function f(o) {
o.p = 2;
}
f(obj); //这里obj.p等于2
// 要让arguments对象使用数组方法,真正的解决方法是将arguments转为真正的数组(2种方法)
var args = Array.prototype.slice.call(arguments);
// or
//5.闭包
//链式作用域(http://javascript.ruanyifeng.com/grammar/function.html)
//既然f2可以读取f1的局部变量,那么只要把f2作为返回值,我们可以在f1外部读取它的内部变量
function f(a, b) { return a; } f(1, 2); //1 f(1); //1 f(); //undefined//2.默认值
//正确写法:
function f2(a) {
//上面代码的||表示“或运算”,即如果a有值,则返回a,否则返回事先设定的默认值(上 例为1);这种写法会对a进行一次布尔运算,只有为true时,才会返回a。可是,除了undefined以外,0、空字符、null等的布尔值也是false。也就是说,在上面的函数中,不能让a等于0或空字符串,否则在明明有参数的情况下,也会返回默认值。
a = a || 1;
return a;
}
f(''); //1
f(); //1
//精确写法:
function f(a) { (a !== undefined && a !== null) ? a = a : a = 1; return a; } f() // 1 f('') // "" f(0) // 0//3.传递方式
//变量p是一个原始类型的值,传入函数f的方式是传值传递。因此,在函数内部,p的值是原始值的拷贝,无论怎么修改,都不会影响到原始值。
var p = 2;
function f(p) {
p = 3;
}
f(p); //这里p的值是2
//函数参数是复合类型的值(数组、对象、其他函数),传递方式是传址传递(pass by reference)。也就是说,传入函数的原始值的地址,因此在函数内部修改参数,将会影响到原始值。
var obj = { p: 1 };
function f(o) {
o.p = 2;
}
f(obj); //这里obj.p等于2
//4.arguments function f() { return arguments.length; } f(1, 2, 3)//3 f(1); //1 f(); //0
// 要让arguments对象使用数组方法,真正的解决方法是将arguments转为真正的数组(2种方法)
var args = Array.prototype.slice.call(arguments);
// or
var args = []; for (var i = 0; i < arguments.length; i++) { args.push(arguments[i]); }
//5.闭包
//链式作用域(http://javascript.ruanyifeng.com/grammar/function.html)
//既然f2可以读取f1的局部变量,那么只要把f2作为返回值,我们可以在f1外部读取它的内部变量
function f2() { var n = 999; function fn() { console.log(n); } return fn; } var result = f2(); result();//999
=========================
setInterval(function(){},2000);自动回调dequene方法
var $html = document.getElementById("d2"); function cb1() { console.log(1); } function cb2() { console.log(2); } var p = $('p')[0]; $.queue(p, 'mx', cb1); $.queue(p, 'mx', cb2); //// 每2秒调用一次$.dequeue,依次输出1,2 setInterval(function () { $.dequeue(p, 'mx'); }, 2000);
阅读全文
0 0
- JavaScript 标准参考教程
- JavaScript标准教程
- JavaScript 标准参考教程(alpha)
- JavaScript 标准参考教程(alpha)
- javaScript 标准参考教程(alpha)
- JavaScript 标准参考教程(alpha)
- JavaScript标准教程之基本语法
- 收藏了阮一峰JavaScript标准参考教程
- JavaScript标准参考教程(alpha)
- JavaScript 标准参考教程--基本语法 学习笔记
- 读《JavaScript 标准参考教程(alpha)阮一峰》(上)
- 读《JavaScript 标准参考教程(alpha)阮一峰》(中)
- 读《JavaScript 标准参考教程(alpha)阮一峰》(下)
- Javascript标准参考教程(阮一峰)笔记总结---语法篇
- 【JavaScript】JavaScript标准阐述
- 《JavaScript标准参考教程(alpha)》读书笔记一:面向对象编程
- WEB2.0标准教程
- LINUX标准教程
- Linux 下文件拷贝
- 为eclipse中的文件设置默认编码
- 排序
- http://download.java.net/openjdk/jdk7下载openjdk源码的网站的bug
- C++中括号()操作符的重载举例及解析
- JavaScript标准教程
- CentOS7.2下VSFTPD的安装、配置、卸载
- SpingBoot项目打war包部署到其他tomcat中
- geoserver中中文标注显示为乱码
- python super()
- 读写沙盒路径内容
- windows 多种 socket 模型的理解
- CSS3鼠标悬停图片显示遮罩特效
- 静态顺序表-c语言实现