前端面试题精选(3)
十八、date內置對象常用的方法都有哪些?
1、獲取年:getFullYear()
2、獲取月:getMonth() ,只獲得 (0-11),用該方法時需+1
3、獲取日:getDate()
4、獲取小時:getHours()
5、獲取分鐘:getMinutes()
6、獲取秒:getSeconds()
7、獲取周的某一天(0~6),其中0是星期天,getDay()
十九、場景題,arr1=[1,2,3] arr2=[4,5,6],合并數組1,并且取到新數組的第二個元素
1、arr1.concat(arr2).slice(1,1)
擴展,數組方法整理:
1.1:join(),把數組切割成字符串
? var arr = [1, 2, 3, 4, 5];document.write(arr.join('-')); //輸出:1-2-3-4-51.2:sort(),
1.2.1對數組進行排序和升序
var arr = [5, 4, 6, 3, 2];arr.sort(function (a, b) {return a - b;})document.write(arr); //6,5,4,3,21.2:sort(),
1.2.1對數組進行排序和升序
var arr = [5, 4, 6, 3, 2];arr.sort(function (a, b) {return a - b;})document.write(arr); //6,5,4,3,21.2.2、對數組進行排序,降序
var arr = [5, 4, 6, 3, 2];arr.sort(function (a, b) {return b - a;})document.write(arr); //6,5,4,3,21.3:push()、向數組末尾添加一個或多個新的元素,并自動更新數組長度。
?var arr = [1, 2, 3, 4, 5, 6, 7, 8];arr.push(11, 12, 13, 14, 15);document.write(arr); //顯示:1,2,3,4,5,6,7,8,11,12,13,14,151.4:合并兩個數組,把兩個數組合并起來
var arr1 = [1, 2, 3, 4];var arr2 = [5, 6, 7, 8];var arr1 = arr1.concat(arr2);document.write(arr1); //輸出:1,2,3,4,5,6,7,81.5:splice
語法:數組名.splice(a,b); a從哪里(下標)開始刪除,b刪除幾個。
1.6:數組反轉
語法:數組名.reverse()
二十、bom常用的4個對象
1、screen,屏幕對象
2、navigator ,瀏覽器對象
3、history 歷史對象
4、location 地址對象
二十一、使用正則表達式清除空的字符串
?var reg = /^\s$/g;reg.test(str)二十二、js創建對象的幾種方式
// js創建對象的幾種方式:// 1、基于Object的方式創建對象var user = new Object();user.name = '張三';user.age = 18;user.show = function () {document.write(this.name + ':' + this.age)}user.show(); // 張三:18// 2、使用對象字面量來創建對象var user = {name: '張三',age: 18,show: function () {document.write(this.name + ':' + this.age)}}user.show(); // 張三:18// 3、使用工廠模式創建對象function creatUser(name, age, address, job) { // 實例對象var user = new Object();user.name = name;user.age = age;user.address = address;user.job = job;user.show = function () {var str = '姓名:' + user.name + '<br>' + '年齡:' + user.age + '<br>' + '工作:' + user.job + '<br>' + '地址:' +this.address;document.write(str);}return user;}var user1 = creatUser('張三', 18, '旅游博主', '家里蹲'); // 原型對象user1.show();console.log(user1 instanceof creatUser); //false //使用該方式看原型對象與實例對象的關系// 4、使用構造構造函數來創建對象(大寫)function CreatUser(name, age, address, job) { // 實例對象this.name = name;this.age = age;this.address = address;this.job = job;this.show = function () {var str = '姓名:' + this.name + '<br>' + '年齡:' + this.age + '<br>' + '工作:' + this.job + '<br>' + '地址:' +this.address;document.write(str);}}var user1 = new CreatUser('張三', 18, '旅游博主', '家里蹲'); // 原型對象user1.show();console.log(user1 instanceof CreatUser); //true ?//使用該方式看原型對象與實例對象的關系二十三、哪些操作方式會造成內存泄漏
1、內存泄漏指任何對象在您不再擁有或需要它之后仍然存在。
問:什么是js的垃圾回收機制?
答:垃圾回收機制(GC:Garbage Collection):執行環境負責管理代碼執行過程中使用的內存。JS的垃圾回收機制是為了以防內存泄漏,內存泄漏的含義就是當已經不需要某塊內存時這塊內存還存在著,沒有被釋放,導致該內存無法被使用,垃圾回收機制就是間歇的不定期的尋找到不再使用的變量,并釋放掉它們所指向的內存。
具體的方式:
1. setTimeout 的第一個參數使用字符串而非函數的話,會引發內存泄漏。
2. 閉包
3. 控制臺日志
4. 循環(在兩個對象彼此引用且彼此保留時,就會產生一個循環)
5、全局變量引起的內存泄露
6、dom清空或刪除時,事件未清除導致的內存泄漏
二十四、請說一下什么是jsonp,以及jsonp的原理是什么
1、jsonp就是利用script標簽的跨域能力請求資源
2、Jsonp 實現思路:
2.1 全稱是 JSON with Padding,請求時通過動態創建一個 Script,在 Script 中發出請求,
2.2 通過這種變通的方式讓請求資源可以跨域。
2.3 它不是一個官方協議,是一個約定,約定請求的參數里面如果包含指定的參數(默認是 callback),就說明是一個 JSONP 請求,服務器發現是 JSONP 請求,就會把原來的返回對象變成 JS 代碼。
2.4 JS 代碼是函數調用的形式,它的函數名是 callback 的值,它的函數的參數就是原來需要返回的結果。
2.5 后臺會把函數調用,重新返回給前端。
二十五、請說下什么是本地對象、內置對象、宿主對象
1、本地對象:本地自己創建的變量,對象
2、內置對象:date,array,object,math
3、宿主對象:window、document等
二十六、請簡單寫一下閉包函數
1、閉包就是能夠讀取其他函數內部變量的函數。
//閉包(保護里面的變量不被污染)function fn() {var num = 0;return function () {num++;console.log(num);undefined}}var fn1 = fn()fn1() // 1fn1() //2// 對于js函數閉包的理解:function zs() { // 整個函數體都是閉包。var sum = '祖母綠寶石戒指'; // 定義的局部變量return function () { // return 讓這個 子函數叛變,并拿到這個函數叛變的 return 的結果。return sum;}}// console.log(zs) //打印zs整個函數體。// console.log(zs()) //打印 zs return的函數var xzs = zs(); //將zs return的函數賦值給一個新的變量 xzs ,這個時候定義了一個匿名函數。var jz = xzs(); // 拿到xzs return的結果console.log(jz) // 打印 xzs 將return 的結果賦值給jz的結果// 對js函數閉包的釋放理解。function fn() {var x = 100;return function () { //匿名函數console.log(x)// return x;}}console.log(fn()) //打印fn return的一個結果。var fn1 = fn(); //聲明一個變量,將fn()return的結果賦值給變量 fn1fn1() // 執行fn1()打印的結果為100;console.log(fn1()); //執行fn1()打印以及return的結果為100,100;fn() == null //將該閉包函數進行釋放,fn1()console.log(fn())console.log(fn1 = null)總結
以上是生活随笔為你收集整理的前端面试题精选(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: visual studio2019安装o
- 下一篇: 2017年html5行业报告,云适配发布