prototype属性
****************************************************************
var x = 1;
console.log(this.x);
console.log(window.x);
****************************************************************
基本类型:string number boolean null undefined bool 占一个字节
其他四个占两个个字节 保存在栈空间 按值访问
typeof(null)
typeof(undefined)
undefined 和 null bool 转化后为都为 false number 转化后 NaN 和 0
引用类型:Array Function Object 占内存不固定 但内存地址是固定的
存储的是地址
****************************************************************
function a() {
function b() {
var bb = 234;
aa = 0;
}
var aa = 123;
b();
console.log(aa);
}
var global = 100;
a();
****************************************************************
new F().__proto__ === F.prototype
Object.prototype.__proto__ === null
Function.__proto__ === Function.prototype
****************************************************************
function a() {
var num = 1;
function b() {
num ++;
console.log(num);
}
return b;
}
var demo = a();
demo();
demo();
闭包
****************************************************************
function c() {
function d() {
var bbb = 234;
console.log(aaa);
}
var aaa = 123;
return d;
}
var glob = 100;
var demo = c();
demo();
****************************************************************
function add() {
var count = 0;
function demo() {
count ++;
console.log(count);
}
return demo;
}
var counter = add();
counter();
counter();
****************************************************************
function test() {
var num = 100;
function a() {
num ++;
console.log(num);
}
function b() {
num --;
console.log(num);
}
return [a, b];
}
var myArr = test();
myArr[0]();
myArr[1]();
****************************************************************
function eater() {
var food = '';
var obj = {
eat : function() {
console.log("I\'m eating " + food);
food = '';
},
push : function(myFood) {
food = myFood;
}
}
return obj;
}
var eater1 = eater();
eater1.push('apple');
eater1.eat();
****************************************************************
function test() {
var arr = [];
for(var i = 0; i < 10; i++){
arr[i] = function() {
console.log(i);
}
}
return arr;
}
var myArr = test();
for(var j = 0; j < 10; j++){
myArr[j]();
}
循环添加事件
****************************************************************
function test() {
var arr = [];
for(var i = 0; i < 10; i++){
(function(j) {
arr[j] = function() {
console.log(j);
}
})(i)
}
return arr;
}
var myArr = test();
for(var j = 0; j < 10; j++){
myArr[j]();
}
function test() {
var arr = [];
for(let i = 0; i < 10; i++){
arr[i] = function() {
console.log(i);
}
}
return arr;
}
var myArr = test();
for(var j = 0; j < 10; j++){
myArr[j]();
}
****************************************************************
var a = 99;
f();
console.log(a);
function f() {
console.log(a);
var a = 10;
console.log(a);
}
****************************************************************
{
var i = 1;
}
console.log(i);
{
let j = 1;
}
console.log(j);
****************************************************************
for(var i = 0; i < 10; i++){
setTimeout(function() {
console.log(i)
}, 0);
}
for(let i = 0; i < 10; i++){
setTimeout(function() {
console.log(i)
}, 0);
}
let a = 1;
let a = 2;
var a = 1;
var a = 2;
****************************************************************
function course(name, age) {
console.log(age);
console.log(arguments[0]);
console.log(name);
console.log(arguments[1]);
console.log(arguments[2]);
arguments[1] = 2;
console.log(age);
console.log(arguments[1]);
}
course('xxx');
****************************************************************
let yuzhu = 'cq';
function getMsg(msg) {
console.log('i\'m ' + msg);
}
export default {
yuzhu: yuzhu,
getMsg: getMsg
};