1、以下代码执行后,console 的输出是?
function Foo(){
console.log(this.location);
}
Foo();
当前窗口的 Location 对象
undefined
null
TypeError
A
JavaScript 的 this 原理
http://www.ruanyifeng.com/blog/2018/06/javascript-this.html
3、下面关于块内声明函数的做法哪些是正确的?
if (x) { function foo() {}}
if (x) { var foo = function() {}}
if (x) { foo = function() {}}
ECMAScript明确的规范了块内函数,javascript实现了这个规范
正确答案: B
解析:
4、数组属性length,方法:concat/sort/reverse等等
5、css新特性:
datetime_local(可以修改时间)
https://www.w3school.com.cn/jsref/dom_obj_datetime-local.asp
<!DOCTYPE html>
<html>
<body>
<h3>演示如何访问 Local Datetime 字段</h3>
<input type="datetime-local" id="myLocalDate" value="2014-06-01T10:55:33">
<p>点击按钮来获得 datetime 字段的本地日期和时间。</p>
<button onclick="myFunction()">试一下</button>
<p id="demo"></p>
<script>
function myFunction() {
var x = document.getElementById("myLocalDate").value;
document.getElementById("demo").innerHTML = x;
}
</script>
</body>
</html>
6、阅读下面代码输出正确的一项( )
var b = 3;
(function(){
b = 5;
var b = 2;
})();
console.log(b);
5
3
2
程序报错
答案:B
分析:
立即执行函数内部,**var发生变量提升,**结果相当于 (function(){ var b; b=5; b=2; })() 所以这个立即执行函数并没有改变全局环境中的b,所以全局环境中的b依旧是3。
立即执行函数的作用:
不必为函数命名,避免了污染全局变量
立即执行函数内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量
封装变量
7、以下哪些表达式的结果为true()
正确答案: A C D 你的答案: D (错误)
undefined == null
isNaN(“100”)
parseInt(“1a”) === 1
[] instanceof Array
ACD
// 1. isNaN()函数用来判断一个数是否是NaN;
// 只有一个值是NaN或者能被转换为NaN的时候才返回true
console.log(isNaN('e'));//true,因为e可以被转换为NaN
console.log(isNaN('11'));//false,因为字符串可以被转换为数字,不能被转为NaN
console.log(isNaN(null));//false,因为null可以被转换为0,不能被转为NaN
console.log(isNaN(NaN));// true,NaN返回true
// 2. parseInt(string,raix)函数有两个参数
// 2.1 注意:string字符串只会被解析从第一个字符开始直到不是数字的字符部分
console.log(parseInt('223'));//223
// 2.2 当字符串中间存在非数字,那么就只解析前面是数字的部分字符
console.log(parseInt('22e3'));//22
// 2.3 如果字符串中第一个字符就不是数字,那么返回NaN
console.log(parseInt('e21'));//NaN
// 对于parseInt()函数还有一个易考点,就是利用数组的下标,还记得parseInt()函数的第二个参数吗?
// 2.4 parseInt()函数的第二个参数指的就是进制,这个参数小于2或者大于36的时候,都会返回NaN
console.log(parseInt(1,1));//NaN ,因为第二个参数是1表示1进制<2,所以错误
console.log(parseInt(1,2));//1,因为表示二进制 =2,在范围内
// 2.5 我们一般都是省略这个参数的,这个时候就是默认为10进制
console.log(parseInt(99));//99
// 2.6 我们第二个参数使用0的时候也是使用十进制
console.log(parseInt(99,0));//99
// 2.7 如果第一个参数前缀使用0x/0X则表示使用16进制
console.log(parseInt(0x99));//153=16*9+9
console.log(parseInt(0x99,10));//如果第一个参数使用了0x表示十六进制,那么第二个参数设置了值也无效
// 2.8 看一个实例,对于数组
var arr=[1,2,3,2,5];
console.log(arr.map(parseInt));//[1, NaN, NaN, 2, NaN]
// arr.map方法就是对于数组arr里面的每一项都去使用方法里面的函数,最后返回新数组
// 因为map方***有索引,所以实际上就是
parseInt(1,0);//1,因为0表示十进制
parseInt(2,1);//1进制<2,所以错啦!
parseInt(3,2);// 2进制,但是3不在0——2范围内(3应该改为11),所以不符合2进制要求
parseInt(2,3);//符合,因为三进制是0-3,而2在范围内
parseInt(5,4);//4进制不包括5,所以NaN
NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。
8、某下对this对象的理解哪些是正确的 ()
this总是指向函数的直接调用者(而非间接调用者);
如果有new关键字,this指向new出来的那个对象;
在事件中,this总是指向触发这个事件的对象;
this是函数运行时自动生成的一个内部对象,只能在函数内部使用;
正确答案: A B D
在事件中,this指向触发这个事件的对象, 特殊的是,IE中的attachEvent中的this总是指向全局对象Window;