TypeScript基础学习 —— 变量声明

var、let、const

  一、var

    1、声明

      一直以来我们都是通过var关键字定义JavaScript变量。

var a = 10;

        我们可以在其他函数内部访问相同的变量

function f() {
    var a = 10;
    return function g() {
        var b = a + 1;
        return b;
    }
}
var g = f();
g(); // returns 11;

      g可以获取到f函数里定义的a变量。 每当g被调用时,它都可以访问到f里的a变量。 即使当gf已经执行完后才被调用,它仍然可以访问及修改a。

function f() {
    var a = 1;
    a = 2;
    var b = g();
    a = 3;
    return b;

    function g() {
        return a;
    }
}
f(); // returns 2

    2、作用域规则

      对于熟悉其它语言的人来说,var声明有些奇怪的作用域规则。

function f(shouldInitialize: boolean) {
    if (shouldInitialize) {
        var x = 10;
    }
    return x;
}

f(true);  // returns ‘10‘
f(false); // returns ‘undefined‘

      变量x是定义在if语句里面,但是我们却可以在语句的外面访问它。 这是因为var声明可以在包含它的函数,模块,命名空间或全局作用域内部任何位置被访问(我们后面会详细介绍),包含它的代码块对此没有什么影响。 有些人称此为var作用域函数作用域。 函数参数也使用函数作用域。

      这些作用域规则可能会引发一些错误。 其中之一就是,多次声明同一个变量并不会报错:

function sumMatrix(matrix: number[][]) {
    var sum = 0;
    for (var i = 0; i < matrix.length; i++) {
        var currentRow = matrix[i];
        for (var i = 0; i < currentRow.length; i++) {
            sum += currentRow[i];
        }
    }
    return sum;
}

      这里很容易看出一些问题,里层的for循环会覆盖变量i,因为所有i都引用相同的函数作用域内的变量。 有经验的开发者们很清楚,这些问题可能在代码审查时漏掉,引发无穷的麻烦。

  

  二、let

      let

let hello = "Hello!";

    1、块作用域

      let声明一个变量,它使用的是 词法作用域块作用域。不同于使用 var 声明的变量那样可以在包含它们的函数外访问,块作用域变量在包含它们的函数外访问,块作用域变量在包含它们的块或者for循环之外是不能访问的。

a++; // illegal to use ‘a‘ before it‘s declared;
let a;

    2、重定义及屏蔽

      使用var声明时,它不在乎你声明多少次;你只会得到1个。

function f(x) {
    var x;
    var x;
    if (true) {
        var x;
    }
}

      let声明就不会这么宽松

let x = 10;
let x = 20; // 错误,不能在1个作用域里多次声明`x`
function f(x) {
    let x = 100; // error: interferes with parameter declaration
}

function g() {
    let x = 100;
    var x = 100; // error: can‘t have both declarations of ‘x‘
}

  三、const

    1、声明    

      它们与let声明相似,但是就像它的名字所表达的,它们被赋值后不能再改变。 换句话说,它们拥有与let相同的作用域规则,但是不能对它们重新赋值。

原文地址:https://www.cnblogs.com/Lyh1997/p/10907692.html

时间: 2024-10-19 10:28:57

TypeScript基础学习 —— 变量声明的相关文章

java基础学习-变量&运算

package com.J; public class java { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub float a=1.11111111111111f;    // 数据表示单精度末尾+"f",此处数据存储要溢出 double b=1.1111111111111111;  // java里面默认小数都为double双精度浮点

TypeScript语法学习--变量的声明

JavaScript里相对较新的变量声明方式是let和const.let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题. const是对let的一个增强,它能阻止对一个变量再次赋值.TypeScript是JavaScript的超集,所以它本身就支持let和const.var 声明一直以来我们都是通过var关键字定义JavaScript变量. var a = 10;//定义了一个名为a值为10的变量也可以在函数内部定义变量: function f() { va

js基础之变量声明提升

变量声明的提升 这是js特有的一个特点,其他语言都没有这个特点.有些程序员挺反感这个特点的. 我们现在先去改变变量的值,然后定义变量,由于JS有一个机制,叫做变量声明的提升, javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 所以现在程序在执行前会已经看见这个程序中有一行定义变量,所以就会提升到程序开头去运行 1 2 3 4 5 6 7 8 9 var v = 'hello'; (function(){

typeScript基础学习

关于 TypeScript TypeScript 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6 的支持,它由 Microsoft 开发,代码开源于 GitHub 上. 什么是 TypeScript TypeScript 是 JavaScript 的类型的超集,它可以编译成纯 JavaScript.编译出来的 JavaScript 可以运行在任何浏览器上.TypeScript 编译工具可以运行在任何服务器和任何系统上.TypeScript 是开源的. 安装 TypeScri

Python基础学习笔记(一)变量类型

参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-chinese-encoding.html 3. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 ? 变量赋值 Python中变量不需要声明,变量赋值操作就是变量声明和定义的过程. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建.例子如下: #!/

java基础学习总结——java环境变量配置(转)

java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之后,还需要在电脑上配置"JAVA_HOME”."path”."classpath"这三个环境变量才能够把java的开发环境 搭建好.在没安装过jdk的环境下,path环境变量是系统变量,本来存在的,而JAVA_HOME和classpath是不存在的. 一.配置JAVA_HOME变量 操作步骤(win7系统):计算机→右键“属性”→高

ES6学习笔记之变量声明let,const

最近用淘宝的weex做了个项目,最近稍微闲下来了.正好很久没有接触RN了,所以趁这个机会系统的学习一下ES6的相关知识. 孔子说:没有对比就没有伤害.所以我们要拿ES6和ES5好好对比的学习.这样才能明白es6是多少的好,积极的拥抱她! 1.let 用let声明的变量,只会在let命令所在的代码块内有效. let的块状作用域 我们来看一个简单的例子: 'use strict'; { let name = 'cloud'; var age = 21; } name;//ReferenceError

TypeScript的变量声明

1.全新的变量声明方式 let和const是JavaScript ES6中新添加的变量声明方式.let在很多方面与var是相似的,但是它可以避免一些在JavaScript里常见一些问题. 而const则是对let的一个增强,它将阻止对一个变量再次赋值(二次赋值). 因为TypeScript是JavaScript的超集,所以它本身就支持let和const. ⒉var声明 原文地址:https://www.cnblogs.com/fanqisoft/p/11828839.html

零基础学习前端1-1配置node及npm环境变量

零基础学习前端1-1配置node及npm环境变量 ## 1-1配置node及npm环境变量 首先:下载node 可以直接去官方网站下载 1.首先从官网下载安装包 https://nodejs.org/ 我这里下载的是windows的 可以进去选择版本 下载后的安装包 2.下一步直接安装,可以选择对应的目录,建议不要选择默认的path 我这里的安装目录:E:\webyikeshuo\node 3.接下来去配置path,"我的电脑"-右键-"属性"-"高级系统