js问答十题

1. [] + [] + ‘foo‘.split(‘‘); [‘1‘] + ‘foo‘.split(‘‘);

答:‘f,o,o‘, ‘1f,o,o‘ split将字符串转化为数组,数组相加,是先将数组转化成字符串,然后进行字符串的连接。

2. new Array(5).toString();

答:",,,,"

3. (true + false ) > 2 + true; true + false > 2 + true;

答: false,false ‘+‘(算术操作符)的优先级优于‘>‘(关系操作符)

4. function a (x) {

  return x * 2;

 }

var a;

alert(a);

答: function a (x) {

       return x * 2;

  }

在预编译与执行的过程中,相当于先创建了一个存储空间为a(var a;的作用),之后将这个空间内容设置成了function函数的内容

5. var func = function h5course () {

  alert(typeof h5course);

 }

 func();

 alert(typeof h5course);

答:function,undefined

函数h5course并非是创建在全局的功能函数,而是以函数字面量的形式,被赋值给了func,因此,在全局作用域的环境中,能够找到func,却不能找到h5course。

6. var x = 1;

 if(function f () {}) {

   x += typeof f;

 }

 alert(x);

答: 1undefined 当在if语句当中放置一个功能函数的时候,这个if语句是能够成立的,但是,这个函数并不会被定义。

7. 闭包 function fun(n,o) {

      console.log(o);

      return {

      fun: function (m) {

        return fun(m,n);

      }

     };

    }

    var a = fun(0); a.fun(1); a.fun(2); a.fun(3);

    var b = fun(0).fun(1).fun(2).fun(3);

    var c = fun(0).fun(1); c.fun(2); c.fun(3);

答:undefined 0 0 0

undefined 0 1 2

undefined 0 1 1

执行fun时会返回一个函数,返回的函数中,使用了n这个变量,而n这个变量恰好是父级函数的形参,此时构成闭包,n这个变量并没有被释放,在第二次调用的时候,n使用的是第一次调用后得到的值,以此类推;

8. var x = 1;

 var y = 2;

 function show () {

  var x = 3;

  return {

    x: x,

    fun: function (a, b) {

      x = a + b;

    }

   }

  }

  var obj = show();

  obj.fun(x,y);

  console.log(obj.x);

  console.log(x);

答:3 , 1 obj所得的是show函数的返回值,即return返回的对象,在调用obj的fun后obj这个对象的x被赋值为3,最后一句console输出的x是在全局作用域中的x因此返回的值应该是全局变量x

9. 闭包

var a = 0,

  b = 0;

function A (a) {

  A = function (b) {

    alert(a + b++);

  }

  alert(a++);

}

A(1);

A(2);

答:1,4 第一次调用A函数的时候,A函数被重新赋值为了function(b){alert(a+b++)};alert输出a后a的值加1,在初始化的A中,形参a其实是一个局部变量,当重置A函数的时候,新的A函数调用了原有A函数作用域中的局部变量a,构成了闭包,a这个局部变量被保存。

10. var arr = [];

arr[0] = ‘a‘;

arr[1] = ‘b‘;

arr.foo = ‘c‘;

alert(arr.length);

arr.length += arr.foo.length;

alert(arr.length);

答: 2,3 数组与数组属性 arr.foo当中,foo为arr数组的一个属性,就像length一样

时间: 2024-10-14 12:55:39

js问答十题的相关文章

矩阵十题【三】 HDU 1588 Gauss Fibonacci

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1588 题目大意:先要知道一组斐波那契数列 i 0 1 2 3 4 5 6 7 f(i) 0 1 1 2 3 5 8 13 下面给你一组数: k,b,n,M 现在知道一组公式g(i)=k*i+b:(i=0,1,2,3...n-1) 让你求出 f(g(i)) 的总和(i=01,2,3,...,n-1),比如给出的数据是2 1 4 100 2*0+1=1   f(1)=1 2*1+1=3   f(3)=2

矩阵十题【一】

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=298 题目大意:已知n个点(n<10000),现在对所有点进行以下操作: 平移一定距离(M),相对X轴上下翻转(X),相对Y轴左右翻转(Y),坐标缩小或放大一定的倍数(S),所有点对坐标原点逆时针旋转一定角度(R). 操作的次数不超过1000000次,求最终所有点的坐标. 首先我们要知道矩阵乘法的概念. 在数学中,一个矩阵说穿了就是一个二维数组.一个n行m列的矩阵可以乘以一个m行p列的矩

矩阵十题【十】 poj 3613 Cow Relays

题目链接:http://poj.org/problem?id=3613 题目大意: 输入N,T,S,E,N表示要走的边数,T表示一共有几条边,S表示开始的点,E表示结束的点 给出一张无向连通图,求S到E经过N条边的最短路. N (2 ≤ N ≤ 1,000,000) T (2 ≤ T ≤ 100) (1 ≤ I1i ≤ 1,000; 1 ≤ I2i ≤ 1,000) 1 ≤ lengthi  ≤ 1,000 题目主要的思想就是用矩阵的乘法模拟出Floyd进行运算,是个很好的题目. //k步最短路

矩阵十题【六】 poj3070 Fibonacci

题目链接:http://poj.org/problem?id=3070 题目大意:给定n和10000,求第n个Fibonacci数mod 10000 的值,n不超过2^31.结果保留四位数字. 很简单的题,和之前做过的相比简单很多了. 构造最简单的斐波那契数列矩阵. #include<iostream> #include<cstring> #include<stdio.h> using namespace std; const int MAX = 2; struct M

数论十题

数论十题 Problem Zero:[neerc2011]Gcd guessing game 现在有一个数x,1 ≤ x≤ n,告诉你n,每次你可以猜一个数y,如果x==y则结束,否则返回gcd(x,y),问最少只要几次就可以保证猜出答案. 本题纯属娱乐.仅仅是一个GCD的游戏,跑题了. 因为本题要求最坏情况,我们直观地猜想就是每次返回都是1.由于答案有可能是质数,而判定一个数,必须要把含有这个质因子的数问一遍.于是,我们引出这样一个思路,将所有1-n的质数分组,每组的积<=n,答案就是组数.

矩阵十题【五】 VOJ1049 HDU 2371 Decode the Strings

题目链接:https://vijos.org/p/1049 题目大意:顺次给出m个置换,反复使用这m个置换对初始序列进行操作,问k次置换后的序列.m<=10, k<2^31. 首先将这m个置换"合并"起来(算出这m个置换的乘积),然后接下来我们需要执行这个置换k/m次(取整,若有余数则剩下几步模拟即可).注意任意一个置换都可以表示成矩阵的形式.例如,将1 2 3 4置换为3 1 2 4,相当于下面的矩阵乘法: 置换k/m次就相当于在前面乘以k/m个这样的矩阵.我们可以二分计

经典算法题每日演练——第二十题 三元组

原文:经典算法题每日演练--第二十题 三元组 我们知道矩阵是一个非常强大的数据结构,在动态规划以及各种图论算法上都有广泛的应用,当然矩阵有着不足的地方就是空间和时间 复杂度都维持在N2上,比如1w个数字建立一个矩阵,在内存中会占用1w*1w=1亿的类型空间,这时就会遇到outofmemory...那么面 临的一个问题就是如何来压缩矩阵,当然压缩的方式有很多种,这里就介绍一个顺序表的压缩方式:三元组. 一:三元组 有时候我们的矩阵中只有零星的一些非零元素,其余的都是零元素,那么我们称之为稀疏矩阵,

经典算法题每日演练——第十题 树状数组

原文:经典算法题每日演练--第十题 树状数组 有一种数据结构是神奇的,神秘的,它展现了位运算与数组结合的神奇魅力,太牛逼的,它就是树状数组,这种数据结构不是神人是发现不了的. 一:概序 假如我现在有个需求,就是要频繁的求数组的前n项和,并且存在着数组中某些数字的频繁修改,那么我们该如何实现这样的需求?当然大家可以往 真实项目上靠一靠. ① 传统方法:根据索引修改为O(1),但是求前n项和为O(n). ②空间换时间方法:我开一个数组sum[],sum[i]=a[1]+....+a[i],那么有点意

C语言考试解答十题

学院比较奇葩,大一下期让学的VB,这学期就要学C++了,然后在开学的前三个周没有课,就由老师讲三个周的C语言,每天9:30~11:30听课,除去放假和双休日,实际听课时间一共是12天*2小时,下午是14:10~5:00,上机,不过每天下午有将近三个小时的上机时间.时间那么紧迫还要考试,今天上午得知考试题是从以下十道题中出,轻松了很多.题如下: 1.计算 ,并输出其结果. 2.求出n个学生一门课程中的最高成绩.最低成绩及高于平均成绩的人数. 3.有10个100内的整数,使用选择排序法从大到小排序.