[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啦

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

原文地址:https://www.cnblogs.com/shane/p/3360335.html