之前一段时间看了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啦
嗯差不多了 希望能对阅读的你有所帮助。