zoukankan      html  css  js  c++  java
  • JavaScript语法和类型

    var
    声明一个变量,可选择将其初始化为一个值
    let
    声明一个块作用域的局部变量,可选择将其初始化为一个值
    const
    声明一个只读的常量

    变量
    一个JS标识符必须以字母、下划线或者美元符号开头;后续的字符可以是数字,
    而且JS语言区分大小写

    声明变量
    1.使用关键词var。例如var a=1,这个语法可以用来声明局部变量和全局变量
    2.直接赋值。例如,x=1。这样就会声明一个全局变量并会在严格模式下产生一个
    ReferenceError引用错误,表明一个不存在的变量被引用。声明变量时不应该用这种方式
    3.使用关键词let。例如let y=2。这个语法可以用来声明块作用域的局部变量

    变量求值
    用var或let声明的且未赋值的变量,值会被设定为undifined。
    试图访问一个未声明的变量或者访问一个使用let声明的但未初始化的变量会导致一个ReferenceError
    异常被抛出
    可以使用undefined来判断变量是否已赋值

    var x;
    if(x===undefined){
    	doThis();
    	}else{
    	doThat();
    }
    

    undefined值相当于布尔值的false

    var x;
    if(!x){
    	myFunction();
    }
    

    数值环境中undefined值会被转换为NaN

    var x;
    a+2 //NaN
    

    对一个null变量求值时,空值null在数值类型环境下会被当作0来对待,布尔类型环境中会被当作false  

    var n=null;
    typeof(n); //object 

    变量的作用域

    在所有函数之外声明的变量叫做全局变量,它可被当前文档中的任何其他代码访问。在函数内部声明的变量,叫做局部变量,它只能在该函数内部引用。

    if (true) {
        var x = 1;
    }
    console.log(x)  // 1

     控制台输出1,因为x的作用域是声明了x的那个函数(或全局范围),而不是if 语句块

    if (true) {
        let y = 1
    }
    console.log(y);  //RefereceError:x is not defined
    

    变量声明提升

     JavaScript可以引用稍后声明的变量而不会引发异常。这一概念成为变量声明提升;然而提升后的变量返回undefined值

    console.log(x === undefined);
    var x = 3;
    

    函数提升

    对于函数,只有函数声明会被提升到顶部,而不包括函数表达式。

    / * 函数声明 */
    foo;  // "bar"
    function foo(){
        console.log("bar");
    }
    

    全局变量

    全局变量实际上是全局对象的属性。在网页中,全局对象是window,所以可是用形如window.variable的语法来设置和访问全局变量。

    常量

    可以使用关键字const创建以一个只读的常量。常量标识符的命名规则和变量相同:必须以字母、下划线或美元符号开头并可以包含字母、数字或下划线。

    const x = "xiaobai";  

    常量不可以通过赋值改变其值,也不可以在脚本运行时重新声明。它必须被初始化为某个值。

    常量的作用域规则和let块级作用域变量相同。若省略const关键字,则该标识符将被视为变量。

    在同一作用域中,不能使用与变量名或函数相同的名字来命名变量。

      

     

  • 相关阅读:
    编译原理-第二章 一个简单的语法指导编译器-2.4 语法制导翻译
    编译原理-第二章 一个简单的语法指导编译器-2.3 语法定义
    编译原理-第二章 一个简单的语法指导编译器-2.2 词法分析
    LeetCode 1347. Minimum Number of Steps to Make Two Strings Anagram
    LeetCode 1348. Tweet Counts Per Frequency
    1349. Maximum Students Taking Exam(DP,状态压缩)
    LeetCode 1345. Jump Game IV(BFS)
    LeetCode 212. Word Search II
    LeetCode 188. Best Time to Buy and Sell Stock IV (动态规划)
    LeetCode 187. Repeated DNA Sequences(位运算,hash)
  • 原文地址:https://www.cnblogs.com/c491873412/p/7460350.html
Copyright © 2011-2022 走看看