zoukankan      html  css  js  c++  java
  • JavaScript 语法总结

    1. 不能为基本类型变量添加属性和方法. 如果添加了,那么也是undefined的.

    1 var str = "a string";
    2 str.attr = "attr";
    3 console.log(str); // "a string"
    4 console.log(str.attr); // undefined

    2. 声明了但未赋值的变量和未声明的变量都不能直接用, 但是错误是不一样的.  和它们在堆区和栈区的存储有关系.

    1 var t;
    2 console.log(t); // undefined
    3 console.log(s); // ReferenceError:s is not defined

    3. 定义变量要使用var关键字, 但是没有使用var也可以赋值给一个变量名, 如: s = 10; 但是此时s不管是在局部域还是全局域里, 这个变量始终都属于 window 对象.

    4. JavaScript中的变量作用域在函数体内有效,无块作用域.

    1 var f = function(){
    2     for(var i=0;i<n;++i){
    3         console.log(i);
    4     }
    5     //在这里i仍然有效,作用域范围是function的.      
    6 }

    5. 一段代码说明HTML文档流中不同代码执行先后顺序

     1 <script type="text/javascript">  
     2 console.log("first");
     3 function fn(){
     4     console.log("third");
     5 }
     6 </script>
     7 <body onload="fn()">
     8 <script type="text/javascript">
     9     console.log("second");
    10 </script>
    11 </body>

      - onload()事件是最后执行的.

    6. JavaScript基本类型用作包装对象时其属性都是只读的,并且不能给它们定义新的属性, 它们是有别于对象的; 不过可以通过String(),Number()或者Boolean()构造函数显示创建包装对象.

      - 使用包装对象.

    1 var s = "test";
    2 s.len = 4;
    3 var t = s.len;
    4 console.log(s);
    5 console.log(t);
    6 /*output:
    7 test
    8 undefined
    9 */

      - 使用构造函数

     1 var s = "test",n = 1,b = true;
     2 var str = new String(s);
     3 var num = new Number(n);
     4 var bool = new Boolean(b);
     5 str.len = "test".length;
     6 var t = str.len;
     7 console.log(str);
     8 console.log(t);
     9 /*output:
    10 { [String: 'test'] len: 4 }
    11 4
    12 */

    7. null和undefined比较

      undefined可以理解为一块荒地,里面有杂草,石头和各种垃圾, 不能直接耕种, 而null就相当于除草,捡出石头和垃圾, 让这块荒地变得可以耕种, 本质上来说是内存的两种不同的状态. 

      -  typeof(null); //"object"  特殊的对象, 含义是"非对象"(或指向空对象), 也可以表示基本类型的变量是无值的, 但是如果将它赋给基本类型变量, 则变量也类型转换成了object类型了.

      -  typeof(undefined); //"undefined"   预定义的全局变量,undefined在ECMAScript3中是W/R的, 在ECMAScript5中的Read-only的.

        - 是变量的一种取值, 表明变量没有初始化.

        - 如果查询对象属性或者数组元素的值时返回undefined, 则说明这个属性或元素不存在(如果要删除某对象的某个属性, 直接赋为undefined即可.).

        - 如果函数没有返回任何值, 则返回undefined.

        - 引用没有提供实参的函数形参的值也只会得到undefined.

      - 比较:

        - null 和 undefined本质是不同的, 但是往往可以互换,(1) null == undefined, null !== undefined; (2) 希望是布尔类型的地方它们都是false, null和undefined都不包含任何属性和方法; (3) 如果想赋给变量或者属性, 或者将它们作为参数传入函数, 最好用null.

    8. 数组和函数在js里面是对象, 而且函数是一等对象(first class).

    9. 对象的比较.(以下比较结果全为false)

    1 var a = [1,2,3,4];
    2 var b = [1,2,3,4];
    3 console.log(a==b);
    4 console.log(a===b);//两个单独的数组永不相等
    5 var c = {x:1};
    6 var d = {x:1};
    7 console.log(c==d);
    8 console.log(c===d);//两个单独的对象永不相等

      - 不等是因为对象是保存的引用.

        -  === 恒等运算

          - true = (值类型相同) && (都不是null或者undefined或者NaN) && (值相同)   else false

    1 var a = NaN;
    2 var b = NaN;
    3 console.log(a===b);//换成null 和 undefined时恒等.
    4 /*false*/

        -  == 在比较前会先进行类型转换, 转换原则与C语言转换很相似, 对象的转换先尝试用valueOf(),再尝试用toString()转换为原始值再进行比较(日期类只使用toString()转换). 不是JavaScript语言核心中的对象则通过各自的实现中定义的方法转换为原始值.

    10. JavaScript的类型转换.

      - 非常灵活, 主要还是根据上下文, 比如一个数字算术运算一个字符串, 会尝试将字符串转换成数字(注意: "4a"=>NaN). 如果是一个NaN+"string", 那么就会变成 "NaN string".

    1 var a = 4 * "4a";//NaN
    2 a = NaN + "4 string";//"NaN4 string"
    3 a = 4 + "4"; //"44"
    4 a = 4*"4"; //16
  • 相关阅读:
    null in ABAP and nullpointer in Java
    SAP ABAP SM50事务码和Hybris Commerce的线程管理器
    Hybris service layer和SAP CRM WebClient UI架构的横向比较
    SAP ABAP和Linux系统里如何检查网络传输的数据量
    SAP CRM WebClient UI和Hybris的controller是如何被调用的
    SAP CRM和Cloud for Customer订单中的业务伙伴的自动决定机制
    SAP CRM WebClient UI和Hybris CommerceUI tag的渲染逻辑
    SAP BSP和JSP页面里UI元素的ID生成逻辑
    微信jsapi支付
    微信jsapi退款操作
  • 原文地址:https://www.cnblogs.com/roger9567/p/5011677.html
Copyright © 2011-2022 走看看