JavaScript常见问题

1. const, let, var的区别
const:变量不可修改,必须初始化
var:变量可以修改,不初始化输出undefined,不会报错
let:块级作用域,函数内部使用let定义后,对函数外部无影响

2. 关于立即执行函数(IIFE,Immediately Invoked Function Expression)
常见函数形式:

function test() { // 1. 函数声明
    console.log("hello world!");
}
// 通过()来调用此函数
test();

function() { // 2. 匿名函数声明
    console.log("hello world!");
}

var test = function() { // 3. 函数表达式
    console.log("hello world!");
}
// 通过()来调用此函数
test();

var test = function test() { // 4. 函数表达式(函数名随意)
    console.log("hello world!");
}

var val = { // 5. 函数表达式
 myFunction: function () { /* logic here */ }
};

// 立即执行函数常见形式
(function(){...})()
(function(){...}())
// 其他
!function(){}();
+function(){}();
-function(){}();
~function(){}();
new function(){ /* code */ }
new function(){ /* code */ }() // 只有传递参数时,才需要最后的圆括号

立即执行函数的模式本质上是函数表达式(命名或匿名的),其目的在于:
一是不必为函数命名,避免了污染全局变量 ;
二是IIFE内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。
样例:

(function($){  
    //插件实现代码,jquery是该匿名函数的参数
})(jQuery);

3. JS中call,apply,bind方法
主要作用是改变函数中的this指向。
call()
语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])
定义:调用一个对象的一个方法,以另一个对象替换当前对象
apply()
语法:apply([thisObj[,argArray]])
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
bind()
语法:bind(thisArg[, arg1[, arg2[, …]]])
定义:创建一个新的函数, 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任何提供之前提供一个给定的参数序列。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

anneCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值