蛋老师-面试题2

https://space.bilibili.com/327247876?from=search&seid=10549288585307610679
目录
一 整数翻转
二 const let var
三 this
四 闭包
五 BFC

一 整数翻转

思路:
整数(不可变,没有方法) →(toString())字符串→(split())数组(reverse())→(join())字符串→(parseInt())整数

注意的点:数字正负、数字是否过大或过小
用到的函数:

Math.pow()    Math.sign()     Math.abs()

var reverse = function(x){
  var min = Math.pow(-2,31)
  var max = Math.pow(2,31)-1
  var sign = Math.sign(x)
  x = Math.abs(x)
  var result = x.toString().split("").reverse().join("")
  x = parseInt(result)*sign
  if(x>max) return 0;
  if(x<min) return 0;
  return x;
}

效率更高内存占用更少的方法

var reverse = function(x){
  var min = Math.pow(-2,31)
  var max = Math.pow(2,31)-1
  var sign = Math.sign(x)
  var result = 0
  var reminder

  x = Math.abs(x)
  while( x > 0 ){
    reminder = x % 10
    x = (x - reminder)/10
    result = result*10 + reminder 
  }
 result *= sign
  if(x>max) return 0;
  if(x<min) return 0;
  console.log("456456"+result)
  return result;
}

var const let

https://www.bilibili.com/video/BV1qk4y1k75W
var可以重复定义 ,let不行会报错 ,const不仅不能重复定义,也不能修改。var会进行声明提升,let不会

var a=1
var a=2

虽然const本身不允许修改,但可以和数组或对象结合,这样就可以达到修改const值的效果了

const aa=[]
 aa[0]="abc"
 aa[0]="as"
 aa[1]="dfg"
image.png

三 this

有三种绑定:隐式绑定,硬绑定和构造函数绑定
隐式绑定,就是直接在对象内部用this
硬绑定就是用call和apply[有方法的对象.方法.call(没方法的的对象)]

var fruit={
  name:'fruit',
  getName:function(){
    console.log(this.name)
  }
}
var apple={
  name:'apple'
}
fruit.getName.call(apple)  //"apple"

构造函数绑定 //像java的构造函数

function fruit(name){
  this.name=name
  this.getName= function(){
    console.log(this.name)
   }
}
var apple = new fruit('apple')
apple.satName() //"apple"

题目


image.png

image.png

总结
谁.方法,那么this就是谁

四 闭包

闭包是指有权访问另一个函数作用域中变量的函数。
如果定义变量去接收一个闭包函数,要记得使用完后销毁(null)
例题

image.png

image.png

闭包的作用
https://www.cnblogs.com/gg-qq/p/11399152.html

BFC 块级格式化上下文

如何创建BFC

1、float的值不是none。
2、position的值不是static或者relative。
3、display的值是inline-block、table-cell、flex、table-caption或者inline-flex
4、overflow的值不是visible
https://blog.csdn.net/sinat_36422236/article/details/88763187

BFC的布局规则

内部的Box会在垂直方向,一个接一个地放置。

Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠。

每个盒子(块盒与行盒)的margin box的左边,与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

BFC的区域不会与float box重叠。

BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。

计算BFC的高度时,浮动元素也参与计算。

问:浮动之后为什么父元素背景会不见?
答:float浮动会使父元素高度塌陷,父级元素不能被撑开,所以导致CSS背景不能显示。
解决方法:https://blog.csdn.net/hua_ban_yu/article/details/80318994

1.对父元素设置高度;
2.对父元素设置 overflow:hidden清除浮动;
3.把父元素也设置为float浮动;
4.结束标签前加入代码:<div style="clear:both"></div>

补充

BFC就是块级的作用域。GFC就是grid作用域。IFC就是内联作用域。FFC就是flex作用域

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容