前端 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 非数值型无形参