1. c 的值是多少 ===> 5
var a = 2 ,b = 3;
var c = a+++b;
2. 以下代码执行结果
var uname = 'pig'
function change () {
alert(uname)
var uname = 'dog'
alert(uname)
}
change()
undefined , dog (变量声明提前问题)
3.获取到页面中所有的checkbox?(不适用第三方框架)
var inputs = document.getElementsByTagName('input')
var checkboxArray = [ ]
for (var i = 0 ; i< inputs.length; i ++) {
var obj = inputs[i]
if (obj.type == 'checkbox') {
checkboxArray.push(obj)
}
}
4. alert的值分别是多少?
var a = 100
function test () {
alert(a)
a = 10 // 去掉了var变成了全局变量
alert(a)
}
test ()
alert(a)
顺序依次:100,10,10
5. 判断字符串以字母开头,后面可以是数字,下划线,字母,长度为6-30
var reg = /^[a-zA-Z]/\w{5,29}$/
6. 下列代码输出什么?为什么?
var a = null
alert(typeof a)
object => 因为null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以是object
6. 看下面代码输出了什么?
for (var i = 1; i <= 3; i++) {
setTimeout(function(){
console.log(i)
},0)
}
答案: 4 4 4 => js事件处理器在线程空闲之前不会运行
7. 对作用域上下文和this的理解,看下列代码的输出值
var User = {
count: 1,
getCount: function(){
return this.count
}
}
console.log(User.getCount())
var func = User.getCount
console.log(func())
答案: 1, undifined => func是在window的上下文中被执行的,所以不会访问到count属性
8. 写一个function,清除字符串前后的空格(兼容所有浏览器)
function trim (str) {
if (str & typeof str === 'string') {
return str.replace(/(^s*)|(s*)$/g,"")
}
}
9.降维数组
var arr = [[1,2],[3,4]]
function test(obj){
return Array.prototype.concat.apply([],obj)
}
test(arr)
降维后结果[1,2,3,4]
10.编写一个方法求一个字符串的字节长度
function getStrLen(str) {
var json = {len:0}
var re = /[\u4e00-\u9f5a]/
for (var i = 0; i < str.length; i++){
if (re.test(str.charAt(i))){
json['len']++
}
}
return json['len']+str.length
}
// 一个中文占两个字符
var str = '猪猪猪123a'
alert(getStrLen(str))
输出:10
11. 输出结果
var a = 1;
a.a=2
console.log(a.a)
输出:undefined
12. 输出结果
var a = {n:1}
var b = a;
a.x = a = {n:2}
console.log(a.x)
console.log(b.x)
输出:undefined {n:2}
a和b在内存里指向同意指针,共用一个对象,所以b也赋予了x属性,但是a重新赋值了,所以a重新指向了一个对象,所以a没有x属性
13. 点击button4会在控制台输出什么?
for (var i = 0; i < 5; i++) {
var btn = document.createElement('button')
btn.appendChild(document.createTextNode('Button' + i))
btn.addEventListener('click',function(){
console.log(i)
})
document.body.appendChild(btn)
}
输出 5 因为在点击之前就已经执行完循环并且跳出循环了,所以点击每个按钮都会输出5
14.数字字符串之前存在数字中的正负号(+/-)时,会被转换成数
console.log(1+"2"+"2")//122
console.log(1++"2"+"2")//32
console.log(1+-"1"+"2")//02
console.log(+"1"+"1"+"2")//112
console.log("A"-"B"+"2")//NAN2
console.log("A"-"B"+2)//NAN