const run = (a, b) => {
obj={
a:a,
b:b
}
result = a + b
let c = d = result
let f = g = obj;
return c
}
run(1, 2)
console.log(result)
console.log(d)
console.log(obj)
console.log(g)
result = 12
delete obj.a;
console.log(result)
console.log(d)
console.log(obj)
console.log(g)
javascript 重头再来
隐式声明全局变量
先来看以下代码,输出为什么
这里变量obj、result、d 、g做了隐式的全局变量声明。所以一定要注意在javascript中在使用变量时,先做声明。另外在javascript中尽量少用全局变量,因为你不知道你声明的变量是否会覆盖其他插件或他人代码的全局变量,这样会可能会导致严重的BUG。在commonJs中,提出了模块规范,使用module变量代表当前模块,通过exports表现对外接口,通过require加载模块内容,module可以很好的避免全局变量混乱的问题,每一个在module中声明的变量都是局部变量,每一个在modul中声明的方法未exports的都是私有方法。模块化开发更加方便协作开发。
扩展知识点
delete对全局变量的操作,判断以下速出内容
for的理解
看以下代码,进行理解for循环的运行机制。
标准库对for语法的解释
不常见的for循环使用
花括号
看以下代码判断会输出什么。
出现这种情况是因为javascript的分号补全机制,javascript运行时会默认在一行的结束位置输出一个分号。所以在规范括号的格式时候,应保持左花括号在当前行,而非换行,保持一致统一。
理解括号、函数声明、函数表达式、立即执行函数
函数声明就是声明一个函数,很简单,函数表达式指的是一个函数在表达式中,那么这个函数是不会被声明的,表达式无法声明函数。大部分含有运算符号的都是表达式。
理解立即执行函数
立即执行函数最外层的括号是运算符,这样导致括号里的函数声明隐式转换为表达式,里面的括号也是运算符,当括号前有函数的话,运行函数,如果没有函数的话运行括号里的内容,如果括号里没有内容,会直接报错。