[前端学习]jsBOM部分学习笔记,第二天

基本包装对象

  • 为了方便基本数据类型的操作(基本数据类型本身是没有属性和方法的),js为number、string、boolean三个基本数据类型提供了基本包装对象,让这三个基本数据类型也能调用一些属性和方法
  • 大致操作流程如下:
    • 当基本数据类型调用属性或者方法时,它会把基本数据类型当作参数传进构造函数(例如:string的构造函数是String()),接着创建一个临时对象,然后用临时对象调用对应的属性和方法,调用完毕后清空临时对象。所以并不是基本数据类型直接调用了
  • 因为临时创建对象只是把基本数据类型的值放进去了,实际上跟基本数据类型本身有可能会不对等,会产生歧义。所以实际上,基本包装对象经常只用于string,其他两个类型用得都很少。

字符串常用属性和方法

  • 截取方法
    • 字符串.slice(开始位置,结束位置) 截取字符串中的值,注意截取时不包含传入的结束位置
    • 字符串.subString(开始位置,结束位置) 截取字符串中的值,注意截取时不包含传入的结束位置
    • 字符串.substr(开始位置,截取个数) 截取字符串中的值
  • 查找位置方法
    • 字符串.indexOf(查找值,开始查找位置)与数字的indexOf方法一模一样,找到返回位置索引,找不到返回-1,所以可以通过do while循环来找到所有值(注意查找位置第一次为0,第二次应该为找到值的后一个开始,所以是索引+1)
  • 替换方法
    • 字符串.replace(查找值,替换值)这个方法只会替换一次,如果想要将字符串中某一个值全部替换为另一个值有两种方法可以实现。一是用do while配合indexOf,一直循环替换,结束条件是字符串中找不到该值了;二是通过正则表达式来实现。
  • 通过位置查找字符方法
    • 最简单的就是和数组一样,使用字符串[索引]的方式来查找,但是这种方法不支持老浏览器。所以还有一种替代方法:字符串.charAt(索引),它的作用和前面的是一模一的。如果想统计每个字符出现的次数,可以通过对象计数的方式,再用for in遍历对象即可。
  • 切割字符串方法
    • 字符串.split(分割值)这个方法可以把字符串根据参数切割后,放进一个新的数组内,并返回这个数组。注意传入的分割值不会放进新数组。
  • 转换大小写方法
    • 字符串.toUppercase();将英文全部转为大写
    • 字符串.toLowercase();将英文全部转为小写
  • 总结:字符串的所有方法都不会对原数组进行操作,因为字符串是不可变的,所以它会在操作之后返回到一个新数组中。另外replace和split这两个方法用得比较频繁,要多注意一下。

预解析详解

  • 在解析器执行js代码时,它会进行声明提升(即函数声明提升和变量声明提升),所以你会发现先调用函数再声明函数也能正常执行,即把函数和变量声明解析优先级提到最高。
  • 但是有一点要注意,变量声明提升不包括赋值,所以你声明一个变量,在预解析时它会预解析变量声明,但是值是undefined,并不包括赋值部分。所以你如果使用函数表达式的方式(var fun = function(){}),先调用再声明就会报错,只声明了fun而它的赋值部分函数体并没有解析。

变量的作用域

  • 之前的笔记中已经说了,变量分为全局变量和局部变量(在函数内部声明的变量),从字面意思就知道,全局变量全局使用,局部变量只能在函数体内使用
  • 有一种特殊的声明方法,在函数内部声明变量时不写var,而函数的所有上级作用域都没有声明这个变量,那么浏览器会隐式的把它声明为全局变量。

js没有块级作用域

  • 在一些其他编程语言中,可以使用{}来限定变量的作用域(即在花括号中声明的变量外部不能使用),但是js没有这个特性,除了函数能限定变量的作用域外,其他任何语法中声明都是全局变量。例如for,if等等
  • 另外,一些编程语言会限定for循环中条件值变量的使用,而js不会,条件变量可以直接在外部正常使用。

作用域链

  • 首先要明白js的执行顺序,它会优先找到var变量声明和function函数声明,并执行。当全局已经声明完毕后,再开始执行一系列代码操作。
  • 在js中作用域是一层嵌套一层的,最高级就是全局作用域,然后多个函数嵌套关系,最外部的函数属于全局,内部的属于上一个函数,依次类推。在函数作用域中执行代码时,也和全局一样。首先找变量和函数的声明,声明完之后,再进行一系列代码的执行
  • 在内部作用域中执行变量操作时,它会优先找自己内部声明的变量,如果有直接执行。如果自己内部没找到,会返回上一级作用域中找,还是没找到会再返回上一级作用域找,一直返回到找到后再对该变量的操作,并且只会操作离它最近的作用域内的。如果找到最外层全局作用域还没找到,就会隐式的把该变量声明成全局变量。
  • 因为作用域链的嵌套关系比较复杂,所以建议分析代码时,使用教程中提到的画图方式来分析问题,把作用域一层一层的画出来,理解起来会很清晰。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,191评论 0 4
  • 有人说过,很多弯路到最后都成了直路,所有的坑到最后也都成了坦途;所谓的直路和坦途并不是摆在眼前的,都是不断的的...
    老衲法号一眉道人阅读 1,303评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,493评论 18 399
  • 今天为什么又失眠了吶?晚上还去天地湖公园快走了三圈,白天也还是比较累的,怎么一点睡意都没有,哎......
    遇见对的你阅读 148评论 1 1
  • 绿波烟雨笑杨枝,街角相邀翠柳姿。未始多情酬一顾,却藏桃面画廊思。
    风雪莘阅读 166评论 0 0