问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

javascript权威指南 学习笔记之变量作用域分享

发布网友 发布时间:2022-04-27 03:29

我来回答

2个回答

懂视网 时间:2022-05-13 23:34

认识DOM

文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法。DOM 将HTML文档呈现为带有元素、属性和文本的树结构(节点树)。

先来看看下面代码:

将HTML代码分解为DOM节点层次图:

HTML文档可以说由节点构成的集合,三种常见的DOM节点:

1. 元素节点:上图中、、

等都是元素节点,即标签。

2. 文本节点:向用户展示的内容,如

  • ...
  • 中的JavaScript、DOM、CSS等文本。

    3. 属性节点:元素属性,如标签的链接属性href="http://www.imooc.com"。

    看下面代码:

    JavaScript DOM

    通过ID获取元素

    学过HTML/CSS样式,都知道,网页由标签将信息组织起来,而标签的id属性值是唯一的,就像是每人有一个身份证号一样,只要通过身份证号就可以找到相对应的人。那么在网页中,我们通过id先找到标签,然后进行操作。

    语法:

     document.getElementById(“id”)

    看看下面代码:

    结果:null或[object HTMLParagraphElement]

    注:获取的元素是一个对象,如想对元素进行操作,我们要通过它的属性或方法。

    innerHTML 属性

    innerHTML 属性用于获取或替换 HTML 元素的内容。

    语法:

    Object.innerHTML

    注意:

    1.Object是获取的元素对象,如通过document.getElementById("ID")获取的元素。

    2.注意书写,innerHTML区分大小写。

    我们通过id="con"获取

    元素,并将元素的内容输出和改变元素内容,代码如下:

    结果:

    改变 HTML 样式

    HTML DOM 允许 JavaScript 改变 HTML 元素的样式。如何改变 HTML 元素的样式呢?

    语法:

    Object.style.property=new style;

    注意:Object是获取的元素对象,如通过document.getElementById("id")获取的元素。

    基本属性表(property):

    注意:该表只是一小部分CSS样式属性,其它样式也可以通过该方法设置和修改。

    看看下面的代码:

    改变

    元素的样式,将颜色改为红色,字号改为20,背景颜色改为蓝:

    Hello World!

    结果:

    显示和隐藏(display属性)

    网页中经常会看到显示和隐藏的效果,可通过display属性来设置。

    语法:

    Object.style.display = value

    注意:Object是获取的元素对象,如通过document.getElementById("id")获取的元素。

    value取值:

    看看下面代码:

    控制类名(className 属性)

    className 属性设置或返回元素的class 属性。

    语法:

    object.className = classname

    作用:

    1.获取元素的class 属性

    1. 为网页内的某个元素指定一个css样式来更改该元素的外观

    看看下面代码,获得

    元素的 class 属性和改变className:

    结果:


    我的公众号二维码

    热心网友 时间:2022-05-13 20:42

    不知道,大家对语言中变量的“声明”与“定义”是怎么理解的,
    我的理解如下:
    “声明”变量,只是仅仅声明,而“定义”变量,指声明了,并且赋值了。
    例如:
    复制代码
    代码如下:
    var
    name;//只是声明
    var
    num
    =
    11;//声明,并且赋值,即定义了
    var
    password
    =
    "yangjiang";//声明,并且赋值,即定义了
    下面是几点总结:
    变量的作用域:全局的和局部的。(注意:如果尝试读取一个未声明的变量的值,javascript会生成一个错误)
    第一点:在都使用var关键字修饰变量的情况下,如果给一个局部变量或函数的参数声明的名字与某个全局变量的名字相同,
    那么就有效地隐藏了这个全局变量。
    例如:
    复制代码
    代码如下:
    var
    scope1
    =
    "global";//var修饰
    function
    checksScope(){
    var
    scope1
    =
    "local";//var修饰
    document.write(scope1);
    }checksScope();//local
    第二点:如果尝试给一个未用
    var
    关键字声明的变量,那么,隐式声明的变量总是被创建为全局变量,即使
    该变量只在一个函数体内使用(只有该函数运行了,才会发生作用),注意不支持函数嵌套的情形。
    例如:
    复制代码
    代码如下:
    scope2
    =
    "globalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
    function
    checkScopeA(){
    scope2
    =
    "localAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
    document.write("<br/>"+scope2);
    myscope
    =
    "myLocalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
    document.write(","+myscope);
    }
    checkScopeA();//localAAAAA,myLocalAAAAA
    *A
    document.write("<br/>"+scope2);//localAAAAA
    *B
    document.write("<br/>"+myscope);//myLocalAAAAA
    *C
    如果将上面的例子中的
    *A处的代码注释掉,
    例如:
    复制代码
    代码如下:
    scope2
    =
    "globalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
    function
    checkScopeA(){
    scope2
    =
    "localAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
    document.write("<br/>"+scope2);
    myscope
    =
    "myLocalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
    document.write(","+myscope);
    }
    //checkScopeA();
    *A
    document.write("<br/>"+scope2);//globalAAAAA
    *B
    document.write("<br/>"+myscope);//发生错误
    *C
    因为函数checkScopeA没有执行,所以
    *B处输出为globalAAAAA;
    因为函数checkScopeA没有执行,所以变量myscope没有声明,如果尝试读取一个未声明的变量,会发生错误。
    第三点:
    在javascript中,函数的定义是可以嵌套的。由于
    每个函数都有它自己的局部作用域,所以有可能出现几个局部作用域的嵌套层。
    例如:
    复制代码
    代码如下:
    var
    scope3
    =
    "global
    scope";
    //定义了一个全局变量
    function
    checkScopeB(){
    var
    scope3
    =
    "local
    scope";
    //定义了一个局部变量,覆盖了全局变量scope3
    function
    nested(){
    var
    scope3
    =
    "nested
    scope";
    //在函数的函数的内部,定义了一个局部变量
    document.write("<br/>"+scope3);
    //nested
    scope
    }
    nested();
    }
    checkScopeB();//nested
    scope
    第四点:
    在javascript中,没有块级作用域,函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有声明的。
    在javascript中,没有块级作用域,函数中定义的所有变量,无论是在哪里定义的,在整个函数中它们都是有定义的。
    例如:
    复制代码
    代码如下:
    function
    test(o){//根据以上的说明:此函数中的i,j,k三个变量的作用域是相同的。
    var
    i
    =
    0;
    //变量
    i
    在整个函数中都有定义
    if(typeof
    o
    ==
    "object"){
    var
    j
    =
    0
    ;
    //变量
    j
    在整个函数中都有定义,而不仅仅是在
    if
    语句块
    for(var
    k=0;k<10;k++){//变量
    k
    在整个函数中都有定义,而不仅仅是在
    if
    语句块
    document.write("<br/>k的值为:"+k);
    }
    document.write("<br/>for循环外k的值:"+k);//此时的
    k
    仍然被定义了,k=10
    }
    document.write("<br/>j的值:"+j);
    //变量
    j
    被声明了,但可能没有被初始化
    因为可能往函数中
    传入的参数
    不是对象
    ,if语句块不会执行
    }
    下面通过两种方式调用此函数:
    方式一:传入对象
    test({});//输出结果:上例中的注释
    方式二:什么都不传
    test();//输出结果:j的值:undefined
    想不明白的是,在第二种方式中的输出结果,为什么会是
    undefined。我当时猜的是:j的值:0
    后来,这本书上面说:
    由于局部变量在整个函数体内都是有声明(或定义)的,这就意味着在整个函数体中都隐藏了同名的全局
    变量。虽然
    局部变量在整个函数体内中都是有声明(或定义)的,但是在执行var语句之前,它是不会被初始化的。
    这样的话,上面的方式二调用的输出结果,就比较好解释了,由于变量j在整个函数中都有定义,而又由于传入函数的参数为空,所以函数体中的if语句不会执行,从而使得j的值为undefined.(这是我参照上面书上说的那句话的理解)
    下面的例子,更好的说明:
    复制代码
    代码如下:
    var
    sssss
    =
    "全局变量";
    function
    f(){
    document.write("<br/>"+sssss);//输出:undefined
    而不是输出"全局变量"
    var
    sssss
    =
    "局部变量";
    document.write("<br/>"+sssss);//输出:局部变量
    }
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 猫大叔加盟是如何做有品质的无骨烤鱼饭? 鱼你在一起用的什么鱼呢? 清蒸巴沙鱼营养美味,无骨无刺非常适合孩子吃的鱼,看完收藏了 充电冲的慢 华为手机充电冲到100好还是不冲到100%好? 为什么外面凡是点巴沙鱼烤鱼都是没有骨头?或者没什么骨头,点草鱼,鲩鱼都是很多骨头,这是为啥? 手机充值冲错了可以转冲吗? 巴沙鱼骨和头能煮汤吗? 为什么座充冲原装电池充不进电,充不是原装的电池就冲得进去? 手机充电冲到80多拔下来会有影响吗 电瓶正充冲不进去反充能充是怎么回事 手机电池充电冲坏了 充电宝为什么给手机充电冲充着冲充着就暂停了,得重新按下才能继续充,充电宝最多能给手机充几次电啊? 48v8安锂电池充冲三个半小时满正常吗 求助】手机线充冲不进电 万能充可以充 这是为什么?纠结啊 洛阳充冲充充电站有限公司怎么样? 梦到生病的亲人脸色惨白,是不是不好的梦? 充冲宝多少毫安能带上飞机? 请问Q币在哪充冲? 手机充冲一会电就不充了,要重新插上才会继续充电,是什么问题? JavaScript权威指南 清晰版 javascript作用域问题 求大侠解释如下js代码,关于变量作用域 javascript setInterval()变量作用域问题 求《JavaScript权威指南第六版》全文免费下载百度网盘资源,谢谢~ 关于javascript作用域和局部变量如何影响全局变量的问题?谢谢! Javascript权威指南的作品目录 窗帘布灰色和蓝色拼接,床靠背用什么颜色搭配好看? 灰色加蓝色是什么颜色? 灰色和蓝色拌起来的色叫什么色? 男生,深蓝色和灰色拼色的外套以及军绿色裤子,这样穿搭配么?皮肤白 窗帘是灰蓝拼接色沙发是深灰色地砖是米*背景墙选什么颜色好? 灰色蓝色红色混在一起是什么颜色 窗帘拼色,一深一浅,蓝色是深,灰色是浅,这两个颜色哪个做主布好?墙报是浅色的偏灰 色的叠加:蓝色和什么颜色混合可以得到灰色? 支付宝网商贷的日利率怎么提高了,我以前才0.22%,刚才去看了下变0.433%... 支付宝网商贷的日利率为什么提高了? 网商贷为啥用着用着就涨利息了? 我的支付宝网商贷利率一直都是0.02怎么突然涨到0.04了? 为什么女人来月经前会长痘吗?是你的身体出现了问题?