https://www.nowcoder.com/discuss/67508?type=2&order=3&pos=21&page=1
知识点:
①正则表达式(基础知识):http://www.runoob.com/regexp/regexp-metachar.html
②常见的正则表达式的用法:https://www.cnblogs.com/fozero/p/7868687.html
题目分析:
^:匹配输入字符串的起始位置
KaTeX parse error: Expected 'EOF', got '\d' at position 72: … Pattern = /^-?\̲d̲+/ 匹配整数 ?代表匹配0次或1次
10086
{
var t=‘teacher’;
let s=‘student’;
}
console.log(t);
console.log(s);
答案:“teacher” ; Uncaught ReferenceError: s is not defined
知识点:变量声明中let和var的区别
题目分析:var会发生变量提升问题,而let不会。
let是ES6新增的变量声明
参考资料:阮一峰的ES6入门书
答案:200: OK; 400: Bad Request; 500: Internal Server Error
‘10’+ 1结果为‘101’
‘10’-1结果为9
答案:${ting}室${shi}厅${wei}卫
知识点:ES6中的模板字符串
题目分析:在模板字符串中,嵌入变量,需要将变量名写在${}之中。
let obj = {name:’韩梅梅’, age:’20’};
let n, a;
答案:let {name: n, age: a} = obj;
知识点:ES6中的对象的解构赋值
题目解析:
变量与属性同名情况下,var { bar,foo } = { foo:“aaa”,bar:“bbb”} ,次序不一致不重要;
变量名与属性不一致(题目这种情况):var {foo:baz} = {foo:"aaa",bar:"bbb"}; baz //"aaa"
答案:model-view-controller、model-view-presenter、model-view-viewmodel
答案解析:(三者的区别和使用的场合)https://blog.csdn.net/victoryzn/article/details/78392128
【未读】
答案:.box {display: flex; align-items: center }
知识点:(flex布局)http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
box-sizing: content-box|border-box|inherit;
值 | 描述 |
---|---|
content-box | 宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框。 |
border-box | 为元素设定的宽度和高度决定了元素的边框盒。就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。 |
inherit | 规定应从父元素继承 box-sizing 属性的值。 |
function switchCase(value){
switch(value){
case '0':console.log('case 0');
case '1':console.log('case 1');break;
case undefined:console.log('undefined');break;
default:console.log('default');
}
}
// 写出下列输出结果
switchCase(0);
switchCase('0');
switchCase();
答案:
default
case 0
case 1
undefined
知识点:switch循环
题目解析:
switchCase(0); //传入数值0,发现没有相同参数的条件,返回default
switchCase(‘0’); //传入参数‘0’,有对应,并且没有break,则返回数据case 0 case1之后又break,随即停止。
switchCase(); //没有传入参数,即undefined
知识点:(css样式隐藏元素)https://www.cnblogs.com/cythia/p/5981306.html
var s = {
s: 'student',
getS: function(){
console.log(this.s);
}
};
var t = {
s: 'teacher'
};
var getS = s.getS;
var getS1 = getS.bind(s);
// 写出以下输出结果
s.getS();
s.getS.apply(t);
getS();
getS1.call(t);
答案:
‘student’
‘teacher’
{
s:“student”
getS(){}
}
‘student’
知识点:call()、apply()、bind() http://www.cnblogs.com/pssp/p/5215621.html
题目解析:
·第一空:函数中的this对象,即指代的是s。
·第二空:函数中的this对象,由于apply绑定到了t对象上,则对应的就是t对象中的’teacher’
·第三空:这里有一个小陷阱,首先,getS是由s对象中的函数赋值的,那么getS就是一个函数function(){console.log(this.s)}; 在此处的函数已经被提取出来,赋值给了getS,同s对象已经没有关联了,此处的this指向的是window,即window.s;那么我们就在代码中寻找s,刚好与s对象同名,所以,此处答应的就是s对象,即{s:“student”,getS(){}}。
第四空:首先,getS1绑定了参数s,bind绑定了之后,随后通过apply或者call都无法改变其绑定的对象,所以,打印出来就是student。
答案:
1、响应式布局
2、cover布局
3、contain布局
4、样式缩放
5、rem缩放
知识点:响应式 https://www.cnblogs.com/mengruying/p/5522494.html
答案:
//方法1
var arr = [1, 2, 3, 4]
function mess(index){
let res = arr.splice(index, 1)[0]
arr.sort((a, b)=>Math.random()-0.5)
arr.splice(index, 0, res)
console.log(arr)
}
//方法2
function (array,index2){
array.map(function(item,index){
if(index!=index2){
var x=parseInt(Math.random()*(array.length));
if(x!=index2){
array[index]=array[x];
array[x]=item;
}
}
})
console.log(array);
}
答案:
function compare(v1, v2){
let res1 = v1.split('.')
let res2 = v2.split('.')
// function giveZero(arr, start, end){
// for(let i = start; i <= end; i++){
// arr[i] = '0';
// }
// }
// if(res1.length > res2.length){
// giveZero(res2, res2.length, res1.length - 1)
// }else if(res1.length < res2.length){
// giveZero(res1, res1.length, res2.length - 1)
// }
//
return res1.join('') > res2.join('') ? v1 : v2
}
let res = compare(str1, str2)
console.log(res)