为什么我们不能在JavaScript中声明函数括号内的局部变量?

时间:2017-08-07 14:10:28

标签: javascript declaration parentheses

我不明白这一点,因为java是我的第一种编程语言。

在java中,括号内的变量应该声明为

例如

class Obstacle:
    def __init__(self, type):
        self.type = 'obstacle'

    def __str__(self):
        return "obstacle"

class Wall(Obstacle):

    def __init__(self, origin, end):

        self.type = 'wall'
        self.origin = origin
        self.end = end

        # etc.... (i.e. there are more things included in here which the 
        # that the barrier also needs to have (like coordinate vectors etc.)

class Barrier(Wall):

    def __str__(self):
        return "Barrier obstacle"

但是在javascript中

public int checkUserName(int minLength){
    //some codes 
}

显示意外的令牌变量错误

我知道Java和JavaScript是两种不同的语言,但我只是想知道为什么它不允许在JavaScript中使用。我知道不允许我只想知道原因。

我之所以这样问,是因为我的JavaScript书籍没有解释为什么JavaScript不允许这样做。它只是说你应该写,但不是为什么。

2 个答案:

答案 0 :(得分:2)

当我开始学习第二语言时,我有很多类似的问题,但是当你学习第三语言时,你只是处理它:)在每两种语言中你会发现类似的东西和不同的东西

您不必在此声明minLength

function checkUsername(var minLength) {
    //some codes 
}

function checkUsername(minLength) {
    //some codes 
}

你可能对TypeScript感兴趣,毕竟它是javascript,但看起来非常类似于java。例如:

public checkUserName(minLength: int ): int {
    //some codes 
}

答案 1 :(得分:1)

在评论中,您已澄清:

  

我知道[它不被允许]但我只是想知道为什么不允许

因为直到ES2015,它才会完全多余而毫无意义;只有minLength有足够的声明,因为JavaScript的变量和参数没有输入。此外,var会产生误导,因为minLength不是变量,它是参数。 (从功能上讲,它们与函数代码的关系几乎完全相同,除了参数的初始值来自函数外部的明显差异;但它们不是&# 39; t 同样的事情。)

在ES2015及以上版本中,有一个论点允许选项const表示该函数永远不会更改参数的值,但我还没有看到有关该进展的任何提案(目前为止)。