实例演示JS中变量常量与函数的声明与使用过程
运行结果
// JS中变量的声明
// 常量,const PARAMNAME = value
console.log("-----------常量-----------")
const PARAM_CONSTANT = "这是一个常量"
console.log("这个常量是:"+PARAM_CONSTANT)
console.log("-----------变量--------------")
//变量
const param = {
'uid':1,
'username' : "test"
}
console.table(param)
console.log("----------命名函数-------------")
//命名函数
function multiply(a,b){
return "a*b="+a*b
}
console.log("命名函数结果:" + multiply(3,4))
console.log("------------匿名函数-----------")
// 匿名函数
const multiply1 = function(a,b){
return "a*b=" + a*b
}
console.log("匿名函数结果:"+multiply1(4,5))
// 箭头函数
console.log("------------箭头函数-----------")
const multiply2 = (a,b)=>{
return "a*b=" + a*b
}
console.log("箭头函数结果:"+multiply2(5,6))
// 立即执行函数
console.log("------------立即执行函数-----------")
let res = (function(a,b){
return 'a*b='+(a*b)
})(20,30)
console.log("立即执行函数结果是:" + res)
为什么不推荐用var
- 声明提升:未声明可使用
for(var i = 0; i<5;i++){
console.log("循环第%d次\n",i)
}
console.log(i)
/* i是在循环体定义的,for(){}语句之外,其他语言(如,c语言)会报未定义的错误.但是这里居然会打印结果.*/
var param = 'Global param';
function test(){
console.log(param); // undefined
var param = 'Local param';
}
test() // 打印出undefined
/*
实际函数内会再添加一个自动声明的语句到console之前
*/
- 重复声明:声明式更新很奇葩
var a = "testvar1"
var a = "testvar2"
var a = "testvar3"
console.log(a)
/*
朴素的理解,这样应该会产生报错"重复定义",这样允许重复定义,违反常识也容易造成错误
*/
- 变量泄漏
{
var y = 100
}
console.log(y) //会打印100
/*
这个按照通俗理解,y是定义在代码块里的,作用域也应该仅限于代码块.但是这里却能输出,这个也会给人们带来认知的困扰和编写中的风险
*/