闲来无事刷刷题之JavaScript

1.AngularJS1中指定控制器的是哪个指令?
ng-controller
补充:
ng-route 自带路由
ng-template 寄存方式
ng-model 指令绑定了 HTML 表单元素到 scope 变量中

2.下面哪种方式不能改变作用域链?
while
reason:
(1).while:只是在函数局部环境或者全局环境运行,并不会改变作用域链。
(2).try catch:虽然执行环境的类型总共只有两种—全局和局部(函数),但还是有其他办法来延长作用域链。这么说是因为有些语句可以在作用域链的前端临时增加一个变量对象,该变量对象会在代码执行后被移除。在两种情况下回发生这种现象。具体来说,就是当执行流进入下列任何一个语句时,作用域链就会得到加强:
try catch语句的catch块;
with语句;
这两个语句都会在作用域链的前端添加一个变量对象。对WITH语句来说,将会指定的对象添加到作用域链中。对catch语句来说,会创建一个新的变量对象,其中包含的是被抛出的错误对象的声明。

3.
弹出undefined
reason:
this的行为有时候会显得极其诡异,让人感到困惑,但只需要记住 this的值要等到代码真正执行时才能确定
同时this的值具体有以下几种情况:
(1).new 调用时指的是被构造的对象
(2).call、apply调用,指向我们指定的对象
(3).对象调用,如执行obj.b(),this指向obj
(4).默认的,指向全局变量window(相当于执行window.fun())
这样看来,当你执行fun()的时候,以上1,2点均不满足。
第3点,因为this是运行时确定的,而我们执行fun(),等同于windown.fun()(与obj没有任何关系),自然的this指向window,而window没有定义变量a,结果是undefined。

4.只能输入零和非零开头的数字,正确的正则表达式是()。

1
^(0|[1-9][0-9]*)$

reason:
只能输入零/非零开头的数字
^是以什么什么开头,$是以什么什么结尾。
*任意多次
|或的意思
()组
[]集合

5.NOSCRIPT标签是做什么用的?
用来定义在脚本未被执行时的替代内容。也可以用在检测浏览器是否支持脚本,若不支持脚本则可以显示NOSCRIPT标签里的innerText

6.angularjs1指令中compile主要是做什么用的?
绑定DOM
reason:
为了解决AngularJS性能问题,编译阶段应分为两个阶段
1.compile (绑定DOM)
2.link (数据绑定)