全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  行业资讯  >  详情

千锋Web前端培训学员分享JS中函数作用域知识点

来源:千锋教育
发布人:Yolanda
2019-01-21

推荐

在线提问>>

  转眼间学习千锋Web前端培训二阶段的课程已经一个月了,我感受到了JS明显比一阶段的HTML和CSS基础难多了。但JS比较有意思,可以实现好多功能。JS函数部分也算是JS重要知识点,好多地方都会用到函数,写一个函数很容易,但写好一个函数,要是理解不到位的话,也是很困难的,就像博客里一些大牛写的代码,完全看不懂!所以说,基础还得掌握牢固。接下来我简单举个例子,给大家分享一下函数中的作用域问题。

  1、作用域的定义:变量或者函数起作用的范围(能够被访问到的区域)

  2、作用域的分类:全局作用域&局部作用域

  全局作用域特点:1)最外层函数和最外层函数外通过var来定义的变量;2)在函数内不通过var来定义的变量(function(){ a=10;})a是全局变量;3)window对象的属性和方法(alert())。

  局部:在es5中函数是七分全局个局部唯一的代码块。特点:1)在函数内通过var定义的变量以及内部定义的函数;2)函数的参数具有局部作用域。

  再者就是声明提升,JS代码运行有两步,预编译和编译,预编译阶段会把函数和声明的变量提升到代码顶部。数组和字符串的方法,有些是重复的,有些容易记混淆,一定要区分记忆。

图片5

  ES5新增的数组和字符串方法:

  1.indexOf: 数组.indexOf(元素) 查找到就返回元素下标,查找不到就返回-1

  2.forEach: 数组.forEach(function(item,index,array){ item:当前遍历到的元素;index:当前遍历到的下标;array:当前数组}) arr.forEach(alert)

  3.map:映射,遍历->操作->返回 数组.map(function(item,index,array){return item+2})

  4.filter: 过滤,数组.filter(function(item,index,array){return item>一个值})找出大于这个值的元素。

  5.some: 判断return后面条件是否成立,如果成立返回ture,否则返回false,如果匹配成功则返回true,后面就不再进行遍历。(只要有一个成立就返回true)arr.some(function(item,index,array){return item>一个值})

  6.every: 跟some一样,但这个必须全部成立才返回true

  7.reduce:对数组中的所有元素调用指定的回调函数。该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。arr.reduce(function(pre,next,index,array){pre:上一次遍历return后面的值;next:当前遍历到的元素})

  字符串的方法:

  1.replace() 字符串.replace(匹配的字符串,替换的字符串)

  2.slice() 字符串.slice(start.end)不包括end位

  2.substring() 字符串.substring(start,end);不包括end位(位置可以互换)

  3.substr() 字符串.substr(开始位,截取长度)

  3.split 字符串.split(分隔符) 分割成数组

  在一个就是事件部分的知识:

  scrollWidth:对象的实际内容的宽度,不包边线宽度,会随对象中内容超过可视区后而变大。

  clientWidth:对象内容的可视区的宽度,不包滚动条等边线,会随对象显示大小的变化而改变。 (width+padding)

  offsetWidth:对象整体的实际宽度,包滚动条等边线,会随对象显示大小的变化而改变。该属性和其内部的内容是否超出元素大小无关,只和本来设定的border以及width和height有关 (width+padding+border)

  //获取事件源

  var _target = evt.target || evt.srcElement;

  console.log(_target,this);

  //阻止冒泡:

  evt.stopPropagation();

  evt.cancelBubble = true;

  if(evt.stopPropagation){

  evt.stopPropagation();

  }else{

  evt.cancelBubble = true;

  }

  //阻止默认行为:

  return false;

  e.preventDefault();

  e.returnValue=false;

  以上就是我对这一个月学习内容的一个小总结,在接下来的时间我会继续努力!

相关文章

计算机编程有哪几种语言?零基础适合学哪种?

女生做前端开发合适吗?毕业后好找工作吗?

报班学java得多少钱,哪里的培训效果好

想做it学什么比较好?选择it学习方向需注意些什么

java程序员培训班要多少钱?贵不贵

开班信息 更多>>

课程名称
全部学科
咨询

HTML5大前端

Java分布式开发

Python数据分析

Linux运维+云计算

全栈软件测试

大数据+数据智能

智能物联网+嵌入式

网络安全

全链路UI/UE设计

Unity游戏开发

新媒体短视频直播电商

影视剪辑包装

游戏原画

    在线咨询 免费试学 教程领取