牛客小题(js)

1.

RegExp对象的方法:

text ( ) :  用来检测一个字符串是否匹配某个整个表达式,如果匹配成功则返回true,否则false

exec( ) : 用来检索字符串中与正则表达式匹配的值。返回一个数组,其中存放匹配结果,如果没有匹配则返回null;

compile( ) : 在脚本执行过程中编译正则表达式,也可以改变已有表达式;(已经从web标准中删除)

注意:match()是字符串的方法,用来验证正则表达式,结果存放在数组中


例如:

var patt=new RegExp(/\d+/g)

patt.text("1 plus 2 equal 3 ") //true


var patt=new RegExp(/\d+/g)

patt.exec("1 plus 2 equal 3 ") //["1"]


var str="1 plus 2 equal 3"

str.match(/\d+/g) // ["1","2","3"]


2.

 主流模块化包含CommonJS,AMD,CMD等;RequireJS遵循AMD规范,SeaJS遵循CMD规范;前者推崇依赖前置,后者推崇依赖就近;


3.

<div style="width:400px;height:200px;">
     <span style="float:left;width:auto;height:100%;">
       <i style="position:absolute;float:left;width:100px;height:50px;"> hello</i>
     <span>
</div>

span标签的宽和高分别是0px和200px;

知识点:

a. span标签是无法设置宽高的

b. float会把浮动元素变成块级元素

c. 绝对定位脱离了文档流


span元素为float,用有了宽和高的属性,继承父元素的高度为200px,而其宽度为auto,子元素脱离了文档流,所以为0px ;(如果这里把<i>的position去掉则可以得到宽度,为100px)


4.

a已经提前声明及定义

console.log("value is "+(a!=0)?"define":"undefine")  //define

考点为运算符的优先级

+号的优先级大于三目运算符,所以这里的比较其实是"value is "+(a!=0)  这个默认就是true



5.

call方法和apply方法的作用相同,第一个参数就是执行上下文的对象,第二个参数call是将其他参数依次填入,apply是填入包含参数的数组.


6.

编写函数obj代码使得

var a=obj("name1");

var b=new obj;


a.name="name1"; 

b.name="name2";


function obj(name)
{
   if(name)
   {  
      var NewObj={};
      NewObj.name=name;
      return NewObj;
    }
}

obj.prototype.name="name2";


7.

(function(){
  var a=b=5;
})( );

console.log (a);
console.log (b);

答案是5,ReferenceError


由于匿名函数调用后会被销毁,而且a为局部变量,b是全局变量,所以b存在,a被销毁了


8.

绝大部分值在转换为布尔类型时都为true,但是以下6种情况会为false

 ""(空串)

 null

 undefined

 0

 NaN

 false



9.

数字类型中需要注意的几个方面:

a.八进制的数字在开头加一个0,十六进制的数字在开头加0x

b.指数表示法1e+1表示10 1e+2表示100,后面+的数字表示在其后面加的0的个数

c.在js中有一种Infinity的特殊值,它所表示的是超出了js处理范围的数值;不过它的类型还是为数字类型Infinity表示最大数,-Infinity表示最小值;Infinity/-Infinity与任何一个确定的数字进行算术运算的时候结果都为Infinity/-Infinity;但是如果是Infinity与其本身做运算则得NaN;

d.Nan也是一种特殊的数字,也属于数字类型;表示一种失败的运算:例如var a=10* "f" ,则a等于NaN ;NaN有传染性,只有算术运算中存在一个NaN,则整个结果也为NaN; 例如:1+2+NaN 则为NaN;


10.

var x= new Boolean(false);
if (x){
 alert("hi");
}


这里还是会弹出hi

因为new Boolean返回的是对象;如果要使其不谈出来,则var x=Boolean(false);

 

11.

function Foo(){
  var i=0;
  return function(){
    console.log(i++);
  }
}

var f1=Foo();

var f2=Foo();


f1();//0

f1();//1

f2();//0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值