JavaScript赋值运算符-奇怪吗?

JavaScript赋值运算符-奇怪吗?,javascript,operators,variable-assignment,assignment-operator,Javascript,Operators,Variable Assignment,Assignment Operator,我遇到了这两个案例: var z=“blahblah”,h var a=b=“blah” 玩弄这些,我得出结论: 相当于: var z= "blahblah"; var h; b = "blah"; var a=b; 相当于: var z= "blahblah"; var h; b = "blah"; var a=b; 这是我试图解释的(2): 它是否与运算符优先级和关联性有关?=运算符接受两个操作数并从左向右运行。如果解释正确,可以用同样的方式解释(1)吗 最后,有没有关于“怪异”

我遇到了这两个案例:

  • var z=“blahblah”,h
  • var a=b=“blah”
  • 玩弄这些,我得出结论:

  • 相当于:

    var z= "blahblah";
    var h;
    
    b = "blah";
    var a=b;
    
  • 相当于:

    var z= "blahblah";
    var h;
    
    b = "blah";
    var a=b;
    
  • 这是我试图解释的(2): 它是否与运算符优先级和关联性有关?
    =
    运算符接受两个操作数并从左向右运行。如果解释正确,可以用同样的方式解释(1)吗

    最后,有没有关于“怪异”JavaScript的来源


    谢谢

    那么,你在万维网上没有发现任何有趣的东西吗?@Jai没有具体说明。语法(1)只是声明多个变量的一种简化方式,它们可以被指定一个类似于
    z
    的值,也可以不类似于
    h
    。这和你翻译它的方式完全一样,从左到右处理comas。分配的工作方式不同,流程从右到左。它解析右边的内容,然后将其指定给左边的部分。如果右边的部分也有一个附件,它也会首先解决右边的内容。直到所有的表达式都被解析。@Defaceo看到它只是没有花太多的时间来搜索一个。@RobG是的,完全正确,如果
    var a=b=“blah”
    位于函数内部,b之前未声明,a将是函数的局部,b将被视为全局(如果严格模式关闭)