1.将arguments转化为数组
函数中的预定义变量arguments并非一个真正的数组,而是一个类似数组的对象。 
它具有length属性,但是没有slice, push, sort等函数,那么如何使arguments具有这些数组才有的函数呢? 
也就是说如何使arguments变成一个真正的数组呢?

function args(){

return [].slice.call(arguments)

}

var m=args(2,5,8) // [2, 5, 8]

m.push(10)//可以使用数组方法

console.log(m)// [2, 5, 8,10]

2.

function add() {

if(!arguments.callee.count) { //当前运行的函数的count属性。若为false,则设置为0

arguments.callee.count = 0;

}

return arguments.callee.count++;

}

add();   // 0

add();   // 1

add();   // 2  // arguments.callee指向当前正在运行的函数。 一般用于匿名函数中

3数组中的最大值

var arr = [2, 3, 45, 12, 8];

Math.max.apply(null, arr);// 45

4.修改arguments

function add() {

Array.prototype.push.call(arguments, 123);

//因为arguments不是数组,是类数组,故需要调用数组方法

return arguments;

}

add(100); // [100,123]

/***1-4   数组操作**/

5.判断一个变量是否为undefined

typeof(name2) === ‘undefined’;// true

6.私有变量

var person =(function() {

var _name='1000';

return {

getName:function() {   return _name || '2000';   }

}

})();

person.getName(); // "1000"

typeof(person._name); // "undefined"

7.JavaScript没有块级上下文(Scope).即函数才是作用域

for(var i = 0; i < 2; i ++) { }

i;  // 2

8.If 中的假:null, undefined, NaN, 0, ‘’, false

9.0.1+0.2 != 0.3
 JavaScript将小数作为浮点数对待,所以可能会产生一些四舍五入的错误,比如:

0.1 + 0.2; // 0.30000000000000004

你可以通过toFixed方法指定四舍五入的小数位数:

(0.1 + 0.2).toFixed(); // "0"

(0.1 + 0.2).toFixed(1); // "0.3"

  1. encodeURI和encodeURIComponent

window.encodeURI函数用来编码一个URL,但是不对这些编码:“:”, “/”, “;”, “?”. 
window.encodeURIComponent则会对上述字符进行编码。
我们通过一个例子来说明:

'index.jsp?page='+encodeURI('/page/home.jsp');  // "index.jsp?page=/page/home.jsp"

'index.jsp?page='+encodeURIComponent('/page/home.jsp');  // "index.jsp?page=%2Fpage%2Fhome.jsp"

因此,在对URL进行编码时我们经常会选择 encodeURIComponent。

11.table.innerHTML在IE的table下是只读属性

<table id="table1"> </table>

// works well in Firefox, but fail to work in IE

document.getElementById('table1').innerHTML = "<tr><td>Hello</td><td>World!</td></tr>";

应该:

document.getElementById('table1').innerHTML = "<table><tr><td>Hello</td><td>World!</td></tr></table>";

12.Boolean 和 new Boolean

我们可以把Boolean看做是一个函数,用来产生Boolean类型的值(Literal):

Boolean(false) === false; // true

Boolean('') === false; // true

所以,Boolean(0)和!!0是等价的。 
我们也可以把Boolean看做是一个构造函数,通过new来创建一个Boolean类型的对象:

new Boolean(false) === false; // false

new Boolean(false) == false; // true

typeof(new Boolean(false)); // "object"

typeof(Boolean(false)); // "boolean"

13.一元操作符 +在JavaScript中,我们可以在字符串之前使用一元操作符“+”。这将会把字符串转化为数字,如果转化失败则返回NaN。【原理未知】

2 + '1'; // "21"

2 + ( +'1'); // 3

如果把 + 用在非字符串的前面,将按照如下顺序进行尝试转化:

1 调用valueOf()

2 调用toString()

3 转化为数字

+new Date; // 1242616452016

+new Date === new Date().getTime(); // true

+new Date() === Number(new Date) // true

javascript 技巧的更多相关文章

  1. Javascript技巧

    Javascript数组转换为CSV格式 首先考虑如下的应用场景,有一个Javscript的字符型(或者数值型)数组,现在需要转换为以逗号分割的CSV格式文件.则我们可以使用如下的小技巧,代码如下: ...

  2. (译文)12个简单(但强大)的JavaScript技巧(二)

    原文链接: 12 Simple (Yet Powerful) JavaScript Tips 其他链接: (译文)12个简单(但强大)的JavaScript技巧(一) 强大的立即调用函数表达式 (什么 ...

  3. (译文)12个简单(但强大)的JavaScript技巧(一)

    原文连接: 12 Simple (Yet Powerful) JavaScript Tips 我将会介绍和解析12个简单但是强大的JavaScript技巧. 这些技巧所有的JavaScript程序员都 ...

  4. 21个值得收藏的Javascript技巧

    1  Javascript数组转换为CSV格式 首先考虑如下的应用场景,有一个Javscript的字符型(或者数值型)数组,现在需要转换为以逗号分割的CSV格式文件.则我们可以使用如下的小技巧,代码如 ...

  5. JavaScript技巧&写法

    原文:JavaScript技巧&写法 JavaScript技巧篇: 1>状态机 var state = function () { this.count = 0; this.fun = ...

  6. 12个非常有用的JavaScript技巧

    在这篇文章中,我将分享12个非常有用的JavaScript技巧.这些技巧可以帮助你减少并优化代码. 1) 使用!!将变量转换成布尔类型 有时,我们需要检查一些变量是否存在,或者它是否具有有效值,从而将 ...

  7. 原生JavaScript技巧大收集

    原生JavaScript技巧大收集 地址:http://itindex.net/detail/47244-javascript

  8. 原生JavaScript技巧大收集100个

    原生JavaScript技巧大收集 1.原生JavaScript实现字符串长度截取function cutstr(str, len) { var temp; var icount = 0; var p ...

  9. 【转】45个实用的JavaScript技巧、窍门和最佳实践

    原文:https://colobu.com/2014/09/23/45-Useful-JavaScript-Tips,-Tricks-and-Best-Practices/ 目录 [−] 列表 第一次 ...

  10. 一些有趣的Javascript技巧

    整理一些刷题时学会的小技巧…… 目录: 即大于0又小于0的变量 String.split() 与 正则表达式 缓存的几种方法 初始化一个数组 即大于0又小于0的变量 问题: 设计一个变量val,使得以 ...

随机推荐

  1. RDIFramework.NET开发实例━表约束条件权限的使用-Web

    RDIFramework.NET开发实例━表约束条件权限的使用-Web 在上一篇文章“RDIFramework.NET开发实例━表约束条件权限的使用-WinForm”我们讲解了在WinForm下表约束 ...

  2. 20145320《Java程序设计》第五次实验报告

    20145320<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18: ...

  3. Leetcode: Nested List Weight Sum II

    Given a nested list of integers, return the sum of all integers in the list weighted by their depth. ...

  4. phpstorm-----------如何激活phpstorm2016

    新版激活方法: 1.在线激活 菜单help >>>> Register 选择License Server 输入 http://idea.qinxi1992.cn/ 点击ok 2 ...

  5. ubuntu 15.04 联网提示:wifi已通过硬件开关禁用

    执行以下命令: echo "options asus_nb_wmi wapf=4"| sudo tee /etc/modprobe.d/asus_nb_wmi.conf 重启

  6. C# 数字带逗号(千分位符、金钱千分位字符)

    首先要明确带了逗号之后  数字就变成字符串了 ,不再是数字了. 昨天做项目的时候需要格式化数字变成带逗号的,本来打算自己写个方法的,后来时间太紧了,就打算从网上查个,查来查去都是要对字符串的位进行操作 ...

  7. Boadload和Image$$??$$Limit含义

    Bootloader 即引导加载程序,是系统加电后运行的第一段软件代码.简单的说它们都是bootloader,所完成的任务也大同小异. 熟悉x86体系结构的朋友肯定知道,x86平台上bootloade ...

  8. Filter过滤的2种方式

    1.新建一个过滤器,继承ActionFilterAttribute,然后重写 public class DemoFilterAttribute:ActionFilterAttribute { //在A ...

  9. Wamp 设置 www 目录

    打开httpd.conf,搜索wwwroot 和 directory 直接改为新目录即可. 对于wamp3是无效的,可以这样解决: “You need to change these values a ...

  10. MVC(二)

    所谓EF延迟加载,就是使用Lamabda或Linq查询数据时,EF并不会将数据直接查询出来,而是在用到的这个查询结果的时候才会加载到内存中.延迟加载也可以理解成 按需加载,顾名思义,就是按照所需的数据 ...