JavaScript 学习日志(变量)

参考网址:https://www.runoob.com/js/js-variables.html

  1. let 与 var 的区别:var 变量域比 let 大,let 适用于其声明的块或子块中。
    var 允许重复声明变量,后声明的值覆盖之前声明的值。
    let 不允许在相同作用域内,重复声明同一个变量,会报错。

    
    	function varTest() {
    	    var x = 1;
    	    if (true) {
    	        var x = 2;       // 同样的变量!
    	        console.log(x);  // 2
    	    }
    	    console.log(x);  // 2
    	}
    	
    	function letTest() {
    	    let x = 1;
    	    if (true) {
    	        let x = 2;       // 不同的变量    
    	        console.log(x);  // 2  
    	    }
    	    console.log(x);  // 1
    	}
    	
    	
    	function () {
    	  var a = 1;
    	  var a = 10;
    	  console.log(a); // 10
    	}
    
    	// 报错
    	function () {
    	  let a = 10;
    	  var a = 1;
    	}
    	
    	// 报错
    	function () {
    	  let a = 10;
    	  let a = 1;
    	}
    	
    	// 因此,let不能在函数内部重新声明参数。
    	function func(arg) {
    	  let arg; // 报错
    	}
    	
    	function func(arg) {
    	  {
    	    let arg; // 不报错
    	  }
    	}
    
    	
    
  2. const 用于声明常量,常量的值不能通过重新赋值来改变,并且不能重新声明。

    	//定义常量a并赋值为0
    	const a = 0;
    	
    	//报错(不能重新赋值)
    	a = 1;
    	
    	//报错(不能重新声明)
    	const a = 2;
    	
    	//输出0
    	console.log("a is: " + a);
    	
    
  3. 变量与字面量

    
    	var a=1;   // a 是变量,1 是字面量
    	
    	var stooge = {    // stooge 是一个对象
    	
    	   "frist-name" = "Julie",    // 等号左为属性名,右侧为属性值
    	    last_name = "beck"    // 属性名如果是合法的标识符,可省略引号
    	
    	};   
    	 // "frist-name", last_name, "Julie", "beck" 都是对象字面量
    	
    
  4. JavaScript 允许重复定义函数,但没有重载这个概念,仅依据函数名来区分函数。

    后定义的同名函数覆盖之前的,与参数无关。

    
    	function test() {
    	    console.log("test");
    	}
    	test();     //输出 "test arg0 + undefined"
    	
    	function test(arg1) {
    	    console.log("test arg" + arguments.length + " + " + arg1);
    	}
    	test(1,2);  //输出 "test arg2 + 1"
    	
    
  5. 变量与普通函数重名的时候,变量生效。

    	// 情况一,只有函数a
    	function a() {
    	    return "function";
    	}
    	console.log(a);     
    	/* 
    	输出
    	function a() {
    	    return "function";
    	}
    	*/
    	console.log(a());   // 输出 "function"
    
    	// 情况二,变量a与普通函数a并存
    	var a = 100;
    	function a() {
    	    return "function";
    	}
    	console.log(a);     //输出 100
    	console.log(a());   
    	/*
    	报错
    	Uncaught TypeError: a is not a function
    	    (anonymous function) @test.html:9
    	*/
    
    

    JS 中有两种函数,一种是普通函数,一种是函数对象。
    函数对象用于声明一个匿名函数,然后将该函数的 init 方法赋值给该变量。

    	// 情况三,变量a与函数对象并存
    	var a = 100;
    	var a = function() {
    	    return "function";
    	}
    	console.log(a);
    	/* 
    	输出
    	function() {
    	    return "function";
    	}
    	*/
    	console.log(a());   //输出 "function"
    	
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值