一些函数返回值

<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title></title>
</head>

<body>
<script type="text/javascript">
//构造函数的返回值
// function foo1() {

// return true;
// }
// console.log(new foo1());
// function foo2() {

// return [1, 2, 4];
// }
// console.log(new foo2());


// var length=10;
// function fn() {
// console.log(this.length);
// }
// function test() {
// arguments[0]();
// }
// test(fn, 1, 3)


function Foo() {
污染全局变量,注意执行顺序会覆盖
getName = function() {
console.log(1);
}

return this;
}
Foo.getName = function() {
console.log(2);
}
Foo.prototype.getName = function() {
console.log(3);
}
var getName = function() {
console.log(4);
}
function getName() {
console.log(5);
}
直接执行函数名对象属性;
Foo.getName(); //2


直接执行该匿名函数(变量会声明提升);
getName(); //4


函数返回结果this,函数执行时内部匿名函数(变量引用外部声明)执行完污染了全局,替换了原来的值
Foo().getName(); //1


污染后的值;
getName(); //1


函数名对象属性实例化
new Foo.getName(); //2


构造函数本身实例化里的prototype属性
new Foo().getName(); //3


构造函数本身实例化里的prototype属性实例化
new new Foo().getName(); //3


// //在非严格模式下,函数的arguments和当前函数定义的形参存在映射关系,一个变另外一个也变;
// function fn1(a) {
// arguments[0] = 100;
// console.log(a); //
// }
// fn1(1);
// //在严格模式下,函数的arguments和当前函数定义的形参是没有映射关系,并且禁止使用arguments.callee和arguments.callee.caller
// function fn2(a) {
// 'use strict'
// arguments[0] = 100;
// console.log(a); //
// }
// fn2(1);
</script>
</body>

</html>

猜你喜欢

转载自www.cnblogs.com/xin1021/p/9216288.html
今日推荐