zoukankan      html  css  js  c++  java
  • 【前端笔试题一(待续)】

       最近各大公司的实习招聘开始了,上学期的实习辞职到现在也快一个月了。这一月似乎没干什么似得,毕设开题也没弄,被老板抓着做实验,各种闹心的事。这月重新在看《JavaScript高级程序设计》,实习半年多都在做PHP,各种杂活,前端的知识本来就不好,更是忘了一大堆。笔试阿里的实习的时候,完全傻眼了。。。还是好好看看基础知识吧。最近有关注各个实习的笔试题,都是看完了然后就忘了,想想还是记录下来吧。为即将来临的找工作做做准备。

    一、(function(){})();和(function(){}())每个括号的用途和区别。

          首先第一种形式是我们比较常见的,在闭包中我们会经常用的。称之为自执行匿名函数,也就是说我们创建了一个匿名函数,然后立即调用了它。

          先来看一个函数定义和函数表达式的区别:

        函数定义:function FunctionName([.....]){FunctionBody}

        函数表达式:function [FunctionName]([....]){FunctionBody}

      可以看到这两个形式非常的像,区别就是函数表达式可以省略函数名。在JS中,如果一条语句是以function 开始,那么就会被解释为函数定义,函数定义是不能紧跟着()被执行的。应该如下:

      var someFunction = function(){};  //定义函数

      someFunction();  //调用函数

      那么我们的匿名函数要怎样定义后立即调用执行呢。这就是我们见的第一种形式,在前面加个(function(){}),这里就会将函数定义转换成函数表达式,函数表达式就可以后面跟着圆括号立即执行了。

      好了,知道它的意思了,我们就可以很简单的知道各个括号的用途了。

      function();这个括号是函数的参数列表。

      (function(){});这个括号就是我们说的将一个函数定义转换为函数表达式。

      (function(){})();这个括号就是立即执行这个函数。因为JS没有块级作用域的概念,所以这个函数经常用来模仿块级作用域。函数体内的变量在函数执行完之后会立马被销毁掉。看个例子:  

    function test(){
    	for(var i = 0; i < 10; ++i){
    
    	}
    	alert(i);//10
    }
    

      

    function test(){
    	(function(){
    		for(var i = 0; i < 10; ++i){
    
    		}
    	})();
    	alert(i);//Error:i is not defined!
    }
    

      第二种写法其实和第一种写法最终效果是一样的,也是自执行匿名函数。这种是模块模式的写法。

    二、How would you mark this work? add(2,5);//7  add(2)(5);//7

    function add(a, b){
    	var temp = function(b){
    		return a + b;
    	};
    
    	if(typeof b == "undefined"){
    		return temp;
    	} else {
    		return temp(b);
    	}
    }
    console.log(add(2,5)); //7
    console.log(add(2)(5));  //7
    

      

  • 相关阅读:
    HDU 5273 Dylans loves sequence 暴力递推
    HDU 5285 wyh2000 and pupil 判二分图+贪心
    HDU 5281 Senior's Gun 贪心
    HDU 5651 xiaoxin juju needs help 逆元
    HDU 5646 DZY Loves Partition
    HDU 5366 The mook jong
    HDU 5391Z ball in Tina Town 数论
    HDU 5418 Victor and World 允许多次经过的TSP
    HDU 5642 King's Order dp
    抽屉原理
  • 原文地址:https://www.cnblogs.com/wait-hua/p/4431684.html
Copyright © 2011-2022 走看看