9.4做JS的题目

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);

  

posted @ 2020-09-04 14:45  小小001  阅读(170)  评论(0编辑  收藏  举报