前端 JS 问题记录


立即执行函数 !function(){}()

function 前面增加符号 ! ~ + - 之类,都是告诉浏览器自动执行这个匿名函数,因为这些符号的运算级别都是高的

(function(){... })() 或 (function(){...}()) 也有相同效果


$(function(){ }) 的意义

是 $(document).ready(function(){ }) 的缩写,是 DOM 加载完执行的函数。


带参数的立即执行函数 !function(a){do something……}(Jquery)

其中,a = Jquery,包含了Jquery 对象所有功能。

如 $(window) 在函数体内,可以写成 a(windows)

可以理解为,将 Jquery 的 $ 符号,变成了 a


关于 length 和 toString

123['toString'].length + 123   //124
true['toString'].length + 123  //123

length 返回内容

1 如果是数组、字符串等有长度的,则返回元素长度

2 如果是 function,则返回函数的形参个数(不含剩余参数、arguments对象)

// 有长度的
[1,2,3].length //3
'123'.length   //3

// 函数
[].splice.length //2
[].slice.length  //2
//splice(start, ?deleteCount, ...items) //接受3个形参,最后一个为剩余参数
//slice(?start, ?end) //接收2个形参

3 第2点没有考虑函数默认参数的情况,如果函数的形参列表有默认参数的情况,则返回第一个默认参数前面的形参个数

function test(p1, p2 = 1, p3, p4 = {}, ...p5){}

test.length  //1
//参数列表中,p2为第一个默认参数,前面只有1个形参,故而返回1

toString

1 数值型为 toString(?radix) 带了一个形参

2 非数值型无形参

相关