1.
var x = new Boolean(false);
if (x) { alert('hi'); }
var y = Boolean(0);
if (y) { alert('hello'); }
第一句
var x = new Boolean(false);
ifX这里这里期望 x 是一个布尔类型的原始值,而 x 是一个对象,任何对象转为布尔值,都为得到 true,js中只有 0,-0,NaN,"",null,undefined 这六个值转布尔值时,结果为 false
第二局
var y = Boolean(0);
用 new 调用构造函数会新建一个布尔对象,此处没有加 new,进行的是显示类型转换,正如上述第一条所说,0 转换布尔,结果为 false,所以此时 y 的值就是 false。
2.
以下代码执行后,array的结果是?
var array=[-1,1,3,4,6,10];
array.sort((a,b)=>Math.abs(a-3)-Math.abs(b-3));
[3,4,1,6,-1,10]
参数(a,b)=>Math.abs(a-3)-Math.abs(b-3):即数值减3的绝对值[4,2,0,1,3,7]作为参数决定排序。
根据绝对值减3大小排列[0,1,2,3,4,7],对应的原数组排序后为[3,4,1,6,-1,10]
3.
基本概念
静态语言(强类型语言)
静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。
例如:C++、Java、Delphi、C#等。
动态语言(弱类型语言)
动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。
例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。
4.以下哪些代码执行后i的值为10:AC
let i =1 + { valueOf() { return 9; } }; let i = 0; new Array(10).forEach(() => { i++; }); let i = parseInt('0xA'); let i = 5; function a(i) { i *= 2; } a(i);