js题目

记录一下自己遇到的一些js题目

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>javascript谜题</title>
</head>
<body>
	
</body>
</html>
<script>
//--------------------------------------

	(function() {
		return typeof arguments;
	})()
	//---- "object"


//---------------------------------------

	var f = function g() {
		return 1;
	}
	typeof g() //----"Uncaught ReferenceError: g is not defined"
	
//----------------------------------------

	(function (x) {
		delete x;
		return x;
	})(1)
	// ------ "1", delete只能删除对象的属性,这里x是变量

//--------------------------------------------------

	var y = 1, x = y = typeof x;
	x // ----- "undefined"

//----------------------------------------------------

	(function f(f) {
		return typeof f()
	})(function(){ return 1})
	// ------- "number"

// ----------------------------------------------

	var foo = {
		bar: function () {
			return this.baz;
		},
		baz: 1
	}	
	(function () {
		return typeof arguments[0]();
	})(foo.bar);
	// --- "undefined"

//-----------------------------------------------------

	var foo = {
		bar: function () {
			return this.baz;
		},
		baz: 1
	}
	typeof (f = foo.bar)();
	// ----- "undefined"

//----------------------------------------------------

	var f = (function f() { return 1; }, function g() { return 2; })();
	typeof f;
	//------- "number"

//---------------------------------------------------
	
	var x = 1;
	if( function f() {} ) {
		x += typeof f;
	}
	x
	//----- "1undefined"
	// if、while、for语句中,因为块只能包含语句(代码块),
	// 因此if()中的f函数不能当函数声明,当成表达式使用,可以认为是执行了
	//if (f = function () {}) f-->"undefined"

//----------------------------------------------------------

	var x = [typeof x, typeof y][0];
	typeof typeof x;
	//---- "string"

//-------------------------------------------------------

	(function (foo) {
		return typeof foo.bar;
	})({ foo: { bar: 1 }})
	//-------"undefined" ,  foo = { foo: {bar: 1}} foo里没有bar属性

//----------------------------------------------------------

	function f() {
		return f;
	}
	new f() instanceof f;
	// false , new f()返回的是f自身

//---------------------------------------------------------------

	var length = 10;
	function fn () {
		console.log(this.length);
	}
	var obj = {
		length: 5,
		methods: function (fn) {
			fn();
			arguments[0]();
		}
	}
	obj.methods(fn, 1);
	// ---- 10 , 2

//------------------------------------------------------
	var foo = { n:1 }; 
	(function (foo) {  
		console.log(foo.n); 
		foo.n = 3;
		var foo = { n: 2 };
		console.log(foo.n); 
	})(foo);
	console.log(foo.n);

//----->>
	var foo = { n:1 }; 
	(function (foo) {  //形参foo同实参foo一样指向同一片内存空间,这个空间的n值为1
		var foo;    //优先级低于形参
		console.log(foo.n); //输出1
		foo.n = 3;   //形参与实参foo指向的内存空间的n被改为3
		foo = { n: 2 }; //形参foo指向新的内存空间,里面的n的值为2
		console.log(foo.n);  //输出新的内存空间的值
	})(foo);
	console.log(foo.n);  //实参foo的指向还是原来的内存空间,里面的n的值为3

//------------------------------------------------------
	var obj = {};
	obj.log = console.log;
	obj.log.call(console, this);
	//-----------"window"  ----> console.log.call(console, this)输出console的上下文

</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值