1.ng-show/ng-hide和ng-if的區(qū)別暖庄?
? ? ? angularJS中的ng-show. ng-hide. ng-if指令的都可以用來控制dom元素的顯示或隱藏繁堡。ng-show和ng-hide根據(jù)所給表達(dá)式的值來顯示或隱藏HTML的元素芬失。當(dāng)賦值給ng-show指令的值為false時(shí)元素會(huì)被隱藏暂吉,值為true時(shí)會(huì)元素會(huì)顯示揖赴。ng-hide功能類似诡延,使用方法相反鉴象。元素的顯示或隱藏是通過改變css的display屬性值來實(shí)現(xiàn)的忙菠。
2.This的指向問題,This在什么情況下不能用?
? ? ?this最終指向的是調(diào)用它的對(duì)象纺弊,這里的函數(shù)a實(shí)際是被window對(duì)象所點(diǎn)擊出來的牛欢。
? ? ? this什么時(shí)候不能用:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1).定時(shí)器中不能用this。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2).事件中嵌套一層函數(shù)淆游。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3).行間中不能嵌套this傍睹。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (4).attchevent不能用this。
3.數(shù)據(jù)類型:
? ? ? ? ? ? ? ? ? ? (1).number
? ? ? ? ? ? ? ? ? ? (2).string?
? ? ? ? ? ? ? ? ? ? (3).object?
? ? ? ? ? ? ? ? ? ? (4).undefined?
? ? ? ? ? ? ? ? ? ? (5).null
? ? ? ? ? ? ? ? ? ? (6).boolean
? ? ? ? ? ? ? ? ? ? (7).symbol(ES6)
4.解釋什么是$rootScope以及和$scope的區(qū)別犹菱?
通俗的說$rootscope是頁面$scope的父親拾稳。
(1).Angular解析ng-app然后在內(nèi)存中創(chuàng)建$rootScope.
(2).Angular會(huì)繼續(xù)解析,找到{{}}表達(dá)式已亥,并且解析成變量熊赖。
(3).接著會(huì)解析帶有ng-controller的div,然后指向某個(gè)controller函數(shù)虑椎,這個(gè)時(shí)候這個(gè)controller函數(shù)變成一個(gè)$scope對(duì)象實(shí)例震鹉。
5.列出至少三個(gè)實(shí)現(xiàn)不同模塊之間通信的方式?
? ? ? ? ? (1).service
? ? ? ? ? (2).events.指定綁定的事件
? ? ? ? ? (3).使用$rootScope
? ? ? ? ? (4).controller之間直接作用$parent,$$childHead等。
? ? ? ? ? (5).directive指定屬性進(jìn)行數(shù)據(jù)綁定捆姜。
6.undefined什么時(shí)候用?
(1).函數(shù)沒有返回值
(2).直接賦值(未定義) 變量聲明未賦值
(3).返回一個(gè)不存在的屬性
(4).傳參數(shù)沒有值
7.常見的瀏覽器內(nèi)核
? ? Trident內(nèi)核:IE,MaxThon,TT,The World,360,搜狗瀏覽器等传趾。[又稱MSHTML]
? ?Gecko內(nèi)核:Netscape6及以上版本,F(xiàn)F,MozillaSuite/SeaMonkey等
? ?Presto內(nèi)核:Opera7及以上泥技。[Opera內(nèi)核原為:Presto浆兰,現(xiàn)為:Blink;]?
? ?Webkit內(nèi)核:Safari,Chrome等。[ Chrome的:Blink(WebKit的分支)]
8.display:none與visibility:hidden的區(qū)別
聯(lián)系:它們都能讓元素不可見
區(qū)別:
? ? ? ? ?1.display:none;會(huì)讓元素完全從渲染樹中消失,渲染的時(shí)候不占據(jù)任何空間簸呈;visibility: hidden;不會(huì)讓元素從渲染樹消失榕订,渲染師元素繼續(xù)占據(jù)空間,只是內(nèi)容不可見
? ? ? ? 2.display: none;是非繼承屬性蜕便,子孫節(jié)點(diǎn)消失由于元素從渲染樹消失造成劫恒,通過修改子孫節(jié)點(diǎn)屬性無法顯示;visibility: hidden;是繼承屬性轿腺,子孫節(jié)點(diǎn)消失由于繼承了hidden两嘴,通過設(shè)置visibility: visible;可以讓子孫節(jié)點(diǎn)顯式
? ? ? ?3.修改常規(guī)流中元素的display通常會(huì)造成文檔重排。修改visibility屬性只會(huì)造成本元素的重繪族壳。
4.讀屏器不會(huì)讀取display: none;元素內(nèi)容憔辫;會(huì)讀取visibility: hidden;元素內(nèi)容
9.CSS優(yōu)先級(jí)算法如何計(jì)算?
? ? ?優(yōu)先級(jí)就近原則仿荆,同權(quán)重情況下樣式定義最近者為準(zhǔn);
? ? 載入樣式以最后載入的定位為準(zhǔn);
?優(yōu)先級(jí)為:
同權(quán)重:內(nèi)聯(lián)樣式表(標(biāo)簽內(nèi)部)>嵌入樣式表(當(dāng)前文件中)>外部樣式表(外部文件中)贰您。
!important > ?id > class > tag
important比內(nèi)聯(lián)優(yōu)先級(jí)高
10.CSS有哪些繼承屬性
? ? ?(1).id選擇器(# myid)
? ? ?(2).類選擇器(.myclassname)
? ? ?(3).標(biāo)簽選擇器(div, h1, p)
? ? ?(4).相鄰選擇器(h1 + p)
? ? ?(5).子選擇器(ul > li)
? ? ?(6).后代選擇器(li a)
? ? ?(7).通配符選擇器(*)
? ? ?(8).屬性選擇器(a[rel = "external"])
? ? ?(9).偽類選擇器(a:hover, li:nth-child)
? ? ? ? ? 可繼承:font-size font-family color, UL LI DL DD DT;
? ? ? ? ?不可繼承:border padding margin width height ;
11.JavaScript原型,原型鏈?有什么特點(diǎn)赖歌?
? ? ? ? ? 每個(gè)對(duì)象都會(huì)在其內(nèi)部初始化一個(gè)屬性枉圃,就是prototype(原型),當(dāng)我們?cè)L問一個(gè)對(duì)象的屬性時(shí)庐冯,如果這個(gè)對(duì)象內(nèi)部不存在這個(gè)屬性,那么他就會(huì)去prototype里找這個(gè)屬性坎穿,這個(gè)prototype又會(huì)有自己的prototype展父,于是就這樣一直找下去,也就是我們平時(shí)所說的原型鏈的概念玲昧。
關(guān)系:instance.constructor.prototype = instance.__proto__
特點(diǎn): ? JavaScript對(duì)象是通過引用來傳遞的栖茉,我們創(chuàng)建的每個(gè)新對(duì)象實(shí)體中并沒有一份屬于自己的原型副本。當(dāng)我們修改原型時(shí)孵延,與之相關(guān)的對(duì)象也會(huì)繼承這一改變吕漂。
12.::before和:after中雙冒號(hào)和單冒號(hào)有什么區(qū)別?解釋一下這2個(gè)偽元素的作用尘应。
單冒號(hào)(:)用于CSS3偽類惶凝,雙冒號(hào)(::)用于CSS3偽元素。(偽元素由雙冒號(hào)和偽元素名稱組成)
雙冒號(hào)是在當(dāng)前規(guī)范中引入的犬钢,用于區(qū)分偽類和偽元素苍鲜。不過瀏覽器需要同時(shí)支持舊的已經(jīng)存在的偽元素寫法,
比如:first-line玷犹、:first-letter混滔、:before、:after等,
而新的在CSS3中引入的偽元素則不允許再支持舊的單冒號(hào)的寫法坯屿。
想讓插入的內(nèi)容出現(xiàn)在其它內(nèi)容前油湖,使用::before,否者领跛,使用::after乏德;
在代碼順序上,::after生成的內(nèi)容也比::before生成的內(nèi)容靠后隔节。
如果按堆棧視角鹅经,::after生成的內(nèi)容會(huì)在::before生成的內(nèi)容之上