zoukankan      html  css  js  c++  java
  • [1009]JS语言精髓与编程实践笔记1

    之前一段时间看了4章 快速飘过 感觉后面有点蛋疼 重新开始仔细看

    目前只看到了第2章

    很多原来模糊的概念现在都有点清晰的认识了 写点小笔记 

    第一个问题 我也不知道咋描述这个问题 直接看代码把

    var str1 = "1";
    
    var str2 = "";
    
    var obj = {};
    
    typeof(str1 || obj); //"string"
    
    typeof(str1&&obj); //"Object"
    
    typeof(str2|| obj); //"Object"
    
    typeof(str2&&obj); // "string"

    这样的结果两句话基本可以解释清楚

    1. || 和 && 这两个运算符 既不改变运算元的数据类型,也不强制运算结果的数据类型

    2. 运算当结果确定的时候就没有继续解释执行下去的必要了(语言组织能力有待提高)

    第二个问题 关于 数据类型和引用类型的

    a = "a";
    b = new String("b");
    a.a=1;
    console.log(a.a); //undefined
    
    b.b=1;
    console.log(b.b);//1

    差不多就这个意思。。。

    第三个问题

    void 是表达式。 原来完全目有注意呃呃呃呃;

    void(console.log((function(a){console.log(a+"456");return "123";})("123")),123);

    chrome F12后 输入上面的代码 控制台结果是

    123456

    123

    当前表达是 返回 undefined

    应该可以理解 呃呃。。

    第四个问题

    好吧 其实是纠结void问题时候发现的

    void 1+1;  //NaN 

    这个情况还是挺好理解的 undefined +1  结果是 NaN

    再看下面一个代码

    void 1>>1; //0

    当时我都想到了 是不是涉及到存储内存的问题

    后来查了定义文档后发现了 原因

    就是在位运算时候 会有ToInt32(undefined)这一个强制转换发生。。。。

    第五个问题

     str1 = "abc"; //"abc"
    var str2 = "abc"; // undefined

    呃呃呃呃呃呃呃呃。。。。。。

    第一种情况 显示隐式的声明一个变量然后再执行附值。。所以结果是 “abc”

    第二种情况 var 是语句语法符号,不是运算符并且此处的= 是语法分割符而非运算符。

    再来个概念: JS中空语句,变量声明,函数声明以及控制子句都不产生返回值 也就是undefined啦

    嗯差不多了 希望能对阅读的你有所帮助。

  • 相关阅读:
    [LC] 252. Meeting Rooms
    [LC] 243. Shortest Word Distance
    [LC] 215. Kth Largest Element in an Array
    [LC] 8. String to Integer (atoi)
    [LC] 367. Valid Perfect Square
    [LC] 66. Plus One
    [LC] 7. Reverse Integer
    [GeeksForGeeks] Print all nodes that don't have sibling in a binary tree.
    [Coding Made Simple] Maximum Sum Subsequence Non-adjacent
    [Coding Made Simple] Longest Bitonic Subsequence
  • 原文地址:https://www.cnblogs.com/shane/p/3360335.html
Copyright © 2011-2022 走看看