1、js怎么实现函数的重载?
重载就是一组具有相同名字、不同参数列表的函数方法。但是记忆中,相同的函数名,后面的函数会覆盖掉前面的函数的,如权威书上有写:
所以在开发过程中,命名函数的时候很小心,但是问题既然存在 必然有道理的,换个方式想,不能倔 和杠。
搜索了一下:关于js如何实现函数的重载overLoading,看下面代码。
function overLoading() { // 根据arguments.length参数的长度,对不同参数的长度进行不同的操作 switch(arguments.length) { case 0: /*没有参数时,操作的代码写在这里*/ break; case 1: /*有1个参数时,操作的代码写在这里*/ break; case 2: /*有2个参数时,操作的代码写在这里*/ //后面还有很多的case...... default: return '没有找到你参数长度要执行的操作'; } }
2、谈谈js跨域,谈谈jsonp?
跨域是指从一个域名的网页去请求另一个域名的资源。
js跨域指通过js 在 不同域 之间进行 数据传输。
「不同的域:不同的协议、域名、端口有任何一个不同,都可以被当作不同的域。」
通过jsonp跨域
ajax不能跨域请求数据,但是,在页面上可以引入不同域上的js脚本文件。jsonp正是利用这个特性来实现的。
例如:我有个index.html页面,需要利用ajax获取不同域上的json数据
「例如json数据地址是http://example.com/data.json」,
那么在index.html中,你可以这样写:
<script src="http://example.com/data.json?callback=dosomething"></script> <script> function dosomething(jsondata){ //处理获得的json数据 } </script>
如果你的页面用了jquery,你可以通过它封装的方法更方便的进行jsonp操作:
<script> $.getJSON('http://example.com/data.json?callback=?,function(jsondata)'){ //处理获得的json数据 }); </script>
优点:兼容性好,在古老的浏览器中都可以运行。
缺点:只支持get请求而不支持post等其他类型的http请求;它只支持跨域http请求这种情况,不能解决不同域的两个页面如何进行js调用等问题。
「关于跨域解决,CORS也可以了解一下」。
3、讲讲闭包吧?闭包的好处?
首先我们要有这样的认知:变量作用域无非就2种:全局变量和局部变量;
函数内部可以直接读取全局变量,但是函数外部无法读取函数内部的局部变量。
闭包示例: function f1(){ var num=100; function f2(){ num++; console.log(num) } returnf2;//执行到这步f1()的f1Ao被销毁了,但是保存在b定义的时候了。 } var demo=f1(); demo();//101 demo();//102
闭包可以先简单理解成:
“定义在一个函数内部的函数”;
能够读取其他函数内部变量的函数。
是将函数内部和外部连接起来的桥梁。
特性:1、函数套函数
2、内部函数可以直接使用外部函数的局部变量或参数。
3、变量的值始终保存在内存中,不会因为外层函数调用后被自动清除。(即不会被垃圾回收机制回收)
缺点:1、内存消耗。一般来说函数的局部变量等会随着执行期上下文一起销毁,但是闭包因为在函数里面,所以拿到来它的局部变量。所以常驻了内存。
2、闭包会在父函数外部,改变父函数内部变量的值(如上代码)。但是开发过程中,不要随便改变父函数内部变量的值。
优点:1、全局变量可以造成命名冲突,使用闭包不用担心这个问题,因为它私有化,加强了封装性,保护变量的安全
2、全局变量因为每个模块都可以调用,当程序越来越复杂之后,会带来不可预测的危险,推荐变量尽量私有化,当我们需要让局部变量发挥全局变量作用时,可以考虑使用闭包。
面包会有的,心态很重要,大千世界里,总有一条自己的道路!加油~。
本文暂时没有评论,来添加一个吧(●'◡'●)