zoukankan      html  css  js  c++  java
  • 变量声明时命名与变量作为对象属性时命名区别

    这个标题实在拗口,Javascript命名变量所遵循的规则
    1、第一个字符必须是字母、汉字字符、 下划线(_)或美元符号($)
    2、剩下的可以是下划线、汉字字符、 美元符号和任何字母、数字


    以下声明变量是正确的

    var p,$p,_p;
    var 长,宽; 

    以下是错误的

    var .p;//只能是字母、数字、下划线或美元符号
    var -p;//只能是字母、数字、下划线或美元符号
    var p*;//只能是字母、数字、下划线或美元符号
    var 4p,4长;//不能以数字开头
    var 长 度;//中间不能有空格
    

    作为对象属性时,有两种方式存取。一是点号(.)运算符,一是中括号([])运算符。

    var p = {name:"Jack"};
    alert(p.name);//点号
    alert(p['name']);//中括号
    

    1、点号要求后面的运算元是合法的标识符(即合法的变量命名),对于不合法的不可以使用
    2、中括号要求的则是一个字符串即可,不必是合法的变量命名。如4p是不合法的变量命名(因为以数字开头),但却可以作为对象属性名(前提是字符串)

    var p = {
    "4p":"Jack",
    "-3":"hello",
    name:"Tom",
    "我":"me",
    "我 们":"we" 
    };
    
    alert(p.4p);//不合法,语法分析时报错,不能以数字开头
    alert(p.我);//合法,输出"me"
    alert(p.我 们);//不合法,语法分析时报错("我"和"们"之间有个空格)
    alert(p["我 们"]);//合法,输出"we",虽然"我"和"们"之间有空格,仍然可以用[]存取
    alert(p['4p']);//合法,输出"Jack"
    alert(p.name);//合法,输出"Tom"
    

    用直接量声明一个对象变量时,属性名有时候我们会加引号,有时候则不加,但无论加或不加,对象的属性类型都是string

    var book = {bname:"js权威指南","price":108};//bname没加引号,price加了
    for(var attr in book) {
         //两次输出都是string,说明js会动态将其转换成字符串类型
         alert( attr + ":" + typeof(attr) );
    }
    



    相关:

    IE浏览器中js使用中文标识符的bug

    名字/标识符

  • 相关阅读:
    echarts官网上的动态加载数据bug被我解决。咳咳/。
    jquery中的jsonp和js中的jsonp还有配合php实现的jsonp。
    jquery中的done和always解决ajax问题
    vue2.0使用watch监听对象属性
    gulp配合vue压缩代码格式化
    支持flv的播放神器
    前端组件化-Web Components【转】
    自定义异步加载资源插件
    【leetcode刷题笔记】Two Sum
    【leetcode刷题笔记】Longest Common Prefix
  • 原文地址:https://www.cnblogs.com/snandy/p/1967937.html
Copyright © 2011-2022 走看看