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关键字,则该标识符将被视为变量。

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

      

     

  • 相关阅读:
    BZOJ 2400: Spoj 839 Optimal Marks (按位最小割)
    bzoj4873: [Shoi2017]寿司餐厅(最大权闭合子图)
    bzoj1497: [NOI2006]最大获利(最大权闭合子图)
    bzoj1607: [Usaco2008 Dec]Patting Heads 轻拍牛头
    bzoj1024: [SCOI2009]生日快乐
    bzoj2761: [JLOI2011]不重复数字
    bzoj1257: [CQOI2007]余数之和sum
    bzoj2456: mode
    bzoj1831: [AHOI2008]逆序对(DP+双精bzoj1786)
    bzoj2431: [HAOI2009]逆序对数列
  • 原文地址:https://www.cnblogs.com/c491873412/p/7460350.html
Copyright © 2011-2022 走看看