JavaScript 趣味题。
第一题:
const Greeters = []
for (var i = 0 ; i < 10 ; i++) {
Greeters.push(function () { return console.log(i) })
}
Greeters[0]()
Greeters[1]()
Greeters[2]()
// 运行结果三个 10
// 解决办法 1、把 var 换成 let, 2、把function(){return console.log(i)} 换成 console.log.bind(null,i)
第二题:
var z =10;
function foo(){
console.log(z)
}
(function(funArg){
var z = 20;
funArg();
})(foo);
//结果 10
//函数调用的位置并不会改变 函数体的位置 所有最后返回的 10
第三题:
  function puzzle() {
    return ()=> {
      console.log(arguments)
    }
 }
puzzle('a', 'b', 'c')(1, 2, 3)
//结果 ["a","b","c"]
//在箭头函数中,this与封闭词法上下文的this保持一致。在全局代码中,它将被设置为全局对象:
第三题
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
第四题
var a = 100;
function testResult(){
var b = 2 * a;
var a = 200;
var c = a / 2;
alert(b);
alert(c);
}
testResult();
// NaN,100
// 变量 a 在函数内变量提升 所以在一开始 a的值是 underfind 所以 b= 2*a=NaN
第五题
var test = (function(a){
  this.a = a;
  return function(b){
    return this.a + b;
  }
}(function(a,b){
  return a;
}(1,2)));
console.log(test(1));
// 2
第六题
(function(){
  var a = b = 3;
})();
console.log("a defined?" + (typeof a != 'undefined'));
console.log("a defined?" + (typeof b != 'undefined'));
//a defined?false
//a defined?true
// 主要是变量 b 没有使用var 关键字进行声明 所有导致变量 b 变成全局变量
第七题
(function(){
    console.log(1);
    setTimeout(function(){console.log(2)},1000);
    setTimeout(function(){console.log(3)},0);
    console.log(4);
})();
// 1,4,3,2
// 单线程 异步执行
第八题
if(!("a" in window)){
    var a = 1;
}
alert(a);
// undefined
// = = ......
第九题
var handle = function(a){
    var b = 3;
    var tmp = function(a){
        b = a + b;
        return tmp;
    }
    tmp.toString= function(){
        return b;
    }
        return tmp;
}
    alert(handle(4)(5)(6));
// 14
第十题
var arr = [,'abc',function(){alert();}];
alert(arr[]());
arr[]();
// 先弹出 3333 再弹出 underfind 最后弹出 3333
第十一题
var len = ;
while(len--){
setTimeout(function(){console.log(len)},);
console.log(len);
}
// 3 2 1 0 -1
第十二题
window.name = "Window";
var cat = {
name:'Cat'
};
var dog = {
name:'Dog',
sound:function(word){
alert(this.name + word);
}
};
dog.sound(" is pooping");
dog.sound.call(window," is banking");
dog.sound.call(dog," is banking");
dog.sound.apply(cat,[ 'hello']);
// Dog is pooping
// Window is banking
// Dog is banking
// Cat hello
第十三题
for(var i = 0,j = 0; i < 10, j < 6; i++, j++){
value = i + j;
}
alert(value);
//10
第十四题
alert(0/0);
alert(1/0);
alert(0/1);
// NaN Infinity 0
第十五题
var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};
console.log(foo.x);
//undefined
JavaScript 趣味题。的更多相关文章
- 小试牛刀3之JavaScript基础题
		JavaScript基础题 1.让用户输入两个数字,然后输出相加的结果. *prompt() 方法用于显示可提示用户进行输入的对话框. 语法: prompt(text,defaultText) 说明: ... 
- 小试牛刀2:JavaScript基础题
		JavaScript基础题 1.网页中有个字符串“我有一个梦想”,使用JavaScript获取该字符串的长度,同时输出字符串最后两个字. 答案: <!DOCTYPE html PUBLIC &q ... 
- 算法训练 Hankson的趣味题
		算法训练 Hankson的趣味题 时间限制:1.0s 内存限制:64.0MB 问题描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Han ... 
- JavaScript算法题之–随机数的生成
		JavaScript算法题之–随机数的生成 需求描述:从一组有序的数据中生成一组随机并且不重复的数,类似于简单的抽奖程序的实现. 先来生成一个有序的数组: 1 var arr = [], 2 ... 
- 1172 Hankson 的趣味题[数论]
		1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ... 
- 1172 Hankson 的趣味题
		1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ... 
- Codevs 1172 Hankson 的趣味题  2009年NOIP全国联赛提高组
		1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Hanks 博 ... 
- 一本通1626【例 2】Hankson 的趣味题
		1626:[例 2]Hankson 的趣味题 题目描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Hankson.现在,刚刚放学回家的Hankson 正在思考 ... 
- 洛谷 P1072 Hankson 的趣味题 解题报告
		P1072 \(Hankson\)的趣味题 题目大意:已知有\(n\)组\(a0,a1,b0,b1\),求满足\((x,a0)=a1\),\([x,b0]=b1\)的\(x\)的个数. 数据范围:\( ... 
随机推荐
- 【算法记事本#NLP-1】最大匹配算法分词
			本文地址:https://www.cnblogs.com/oberon-zjt0806/p/12409536.html #NLP-1 最大匹配算法(MM) 最大匹配算法(Maximum Matchin ... 
- sql03
			1.约束 约束详解 ->约束的目的:保证数据的完整性. not null ->默认值约束.可空约束.主键约束.外键约束.唯一键约束.检查约束 1) 用sql语句为表添加新的字段 2) 为字 ... 
- D3.js实现拓扑图
			最近写项目需要画出应用程序调用链的网路拓扑图,完全自己写需要花费些时间,那么首先想到的是echarts,但echarts的自定义写法写起来非常麻烦,而且它的文档都是基于配置说明的,对于自定义开发不太方 ... 
- JavaWeb中登录验证码生成
			1.页面代码 <html> <head> <title>Title</title> <script type="text/javascr ... 
- ES6的函数
			1,带参数默认值的函数 JS函数有个独特的行为:可以接受任意数量的参数,而无视函数声明的形参数量.未提供的参数会使用默认值来代替.实际传递的参数允许少于或多于正式指定的参数. 在ES6中可以直接在形参 ... 
- Java原来还可以这么学:如何搞定面试中必考的集合类
			原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ... 
- h5 移动端适配方案思考
			基础概念 CSS像素(CSS pixels) 这个是浏览器使用的抽象单位,用来精确度量网页上的内容.平时经常写的width:100px;height:100px;都是与设备无关的. 设备独立像素(de ... 
- Redis02——Redis内存数据如何保存到磁盘
			在前一篇文章中,已经介绍了Redis的基础数据结构,这篇文章将继续介绍Redis的持久化原理. 简介 众所周知Redis的所有数据都存在于内存之中,这就会存在因内存问题而导致的数据丢失,为了避免这一问 ... 
- 3L-最好、最坏、平均、均摊时间复杂度
			关注公众号 MageByte,设置星标点「在看」是我们创造好文的动力.后台回复 "加群" 进入技术交流群获更多技术成长. 本文来自 MageByte-青叶编写 上次我们说过 时间复 ... 
- vue基础响应式数据
			1.vue 采用 v……vm……m,模式,v---->el,vm---->new Vue(实例),m---->data 数据,让前端从操作大量的dom元素中解放出来. 2.vue响应 ... 
