js中變量的定義


 js中變量的定義的三中方法:const,var,let

 

1.const

  const 設置的是常量,一經設置不可改變。在設置時必須賦初值。

2.var   

  var設置的是變量,可以不賦初值。

  如果不賦初值的話,變量的類型為undefined;

  如果賦值為:

var a="";

  則a 的類型為string;

  定義時,有無加var的區別:

    在JS里的全局環境就是一個對象,這個對象也是JS運行的根,對瀏覽器中的JS,這個對象就是window對象。對全局JS語句來說,window對象就相當於當前作用域。

1 var mylike="java";//定義了window作用域的一個變量 mylike;
2 yourlike="c#";    //定義了window作用域的一個屬性 yourlike;

    在全局語句中,加不加var並沒有什么區別,但在函數體中加不加var是有區別的

   

 1   var mylike = "c#";
 2   yourlike = "c++";
 3   console.log("mylike is "+mylike+" "+"yourlike is "+yourlike);    //mylike is c# yourlike is c++
 4   function change(){
 5     console.log("in the function 's mylike "+mylike+"in the function's  yourlike "+yourlike);  //in the function 's mylike undefinedin the function's  yourlike c++
 6 
 7     var mylike = "java";
 8     yourlike = "php";
 9     console.log("change mylike "+mylike+"change yourlike "+yourlike);   //change mylike javachange yourlike php
10   }
11   change();
12   console.log("next mylike "+mylike+""+"next yourlike "+yourlike);       //next mylike c#next yourlike php

 

    加了var 的在函數內外表現為兩個屬性,var 定義的變量是有作用域的。而函數相當於在全局作用域中創建了一個子作用域。js遇到變量或函數時會首先在當前作用域找,沒找到再往上一級作用域找。在change函數中如何沒有 定義 var mylike 則會輸出 “in the function ‘s mylike c#”,而上面在函數中定義 var mylike,當前作用域存在 mylike這個變量,而在一開始mylike還沒賦值,為undefined。

    在函數中mylike是一個值,函數外mylike是一個值。而沒有var修飾的只表現出一個東西。

3.let

  let是塊級作用域,在函數中定於let變量,在函數外無影響

1   let a=1;
2   console.log(a);       //1
3   function change(){
4     let a = 333;
5     console.log(a);     //333
6   }
7   change();
8   console.log(a);       //1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM