只是变量名称命名上的区别。
下划线和$都属于合法的变量名.
所以,从语法角度没有区别。
从编码规范上讲,前边带$表示该变量是个jQuery对象类型的变量,带下划线,表示“局部变量”。
少对引号差别很大的attr应该是个字符串,javascript对象用作字典数据结构时以 ["字符串"] 形式访问,如果该字符串是一个合法变量名,可以以 对象.变量名 形式访问。
前一个函数的写法是错误的,除非真有名为"attr"的对象属性,这与变量attr的值无关。后一个函数表示访问由变量attr的值给定名称的对象属性。