JavaScript基础(五)

JavaScript基础(五)
变量的多种声明方式对作用域访问的影响
不规范的声明方式(不推荐)
不加var声明,直接进行赋值: sum = 100;
var 变量名1 = 变量名2 = 变量名3 = 数据; 只有变量名1是标准方式。
不规范的变量声明方式导致作用域的访问出现变量,可能会隐式的声明为全局变量
作用域链
作用域链是用来描述 变量访问 规则的一种方式。
在任意作用域下进行变量访问时的规则:(沿作用域链向上查找)
首先查找当前作用域,如果存在就使用
如果不存在,会查找父作用域,如果存在就使用
最终查找到全局作用域,如果存在就使用
如果还是不存在,根据使用方式,有两种情况
如果是取值,报错
如果是赋值,会隐式声明全局变量-
预解析
预解析:js代码在执行之前解析器对代码预先进行了解析操作。
预解析进行的操作一共有2个
变量提升:找到当前作用域中的变量声明部分var,将声明提升到作用域顶端
函数提升:找到当前作用域中的函数声明语句,将函数体提升到作用域顶端
注意:函数表达式不适用于这个规则
arguments操作
含义:表示函数本次调用传入的所有实参
使用场景:当形参和实参的个数不对应时可以使用arguments操作
本质:本质上是伪数组(类数组)
只具有索引和长度,不具有数组特殊功能(例如push功能)的一种数据形式
// 例如:对传入的所有数值进行求和
function getSum () {
// 遍历arguments,获取元素后进行求和即可
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
console.log(getSum(1, 2, 3, 4, 5));
console.log(getSum(1, 2, 3, 4, 5, 6, 7, 8, 9));
函数的其他使用方式
命名函数和匿名函数:
命名函数:有名字的函数
匿名函数:没有名字的函数
因为没有名字,所以不能单独使用
自调用函数(立即执行函数) --- (会写,能认识即可)
(function () {
console.log(‘这是自调用函数‘);
})();
// 注意:结尾的;必须加
效果:在书写位置执行一次
作用:用来减少全局变量的使用
可以在书写多个功能时减少命名的冲突
提高代码的执行效率(减少变量名的检索次数)
回调函数(会写,能认识即可)
含义:指的是某个函数作为参数使用的形式。
命名函数和匿名函数都可以作为回调函数使用
注意:传入命名函数时,不要加()
递归函数(会写,能认识即可)
含义:某个函数在内部调用自身就称为递归。
常见问题:
死循环‘无限次的重复调用
解决方式,一定要给递归设置合理的结束条件
闭包函数(js高级讲解)
函数类型检测
检测方式:typeof
格式: typeof 函数名;
注意:不要书写小括号
类型名称 ‘function‘
对象
对象是一种复杂数据类型
对象是由一个或多个属性组成的
属性是由属性名和属性值组成的
这种写法又称为 键值对
键 - 属性名 值 - 属性值
var obj = {
name : ‘jack‘,
age : 18,
gender : ‘男‘
};

    var obj2 = new Object();  // var obj2 = {}; // 声明了一个空对象
    对象的属性操作
        对象.属性名
        对象['属性名']
                // 声明对象同时设置初始属性:
    var obj = {
        name : 'jack',
        age : 18,
        gender : '男'
    };

    // 声明后进行的属性操作:
    // 方式1:
    console.log( obj.name ); // 'jack'
    obj.name = 'rose';
    console.log( obj.name ); // 'rose'

    // 方式2:
    console.log( obj['name'] ); // 'rose'
    obj['name'] = '张三';
    console.log( obj['name'] ); // '张三'
    对象的属性和方法
        含义:方法其实也是属性,只是属性值保存的是函数,所以称为方法。
        起这个名字的作用:用来区分函数属性和其他普通属性
            函数需要进行调用才有意义
        设置方式:
            可以设置匿名函数
            也可以设置命名函数
                注意:设置函数名即可,不要加()
            // 方法可以设置为匿名函数值:
    var obj = {
        name : 'jack',
        age : 18,
        aiHao : ['吃', '喝', '跳广场舞'],
        sayHi : function () {
            console.log('这是sayHi的代码');
        }
    };

    console.log( obj.name );
    console.log( obj.age );
    console.log( obj.aiHao );
    console.log( obj.sayHi );

    obj.sayHi(); */

    // 方法也可以设置命名函数:
    //   - 使用场景:如果多个对象具有相同的方法时,可以采用命名函数统一保存

    // 通过命名函数统一保存obj1和obj2的sayHi方法值
    function sayHi2 () {
        console.log('hello,吃了么~');
    }

    var obj1 = {
        name : 'jack',
        // 注意,命名函数设置时,不要加()
        sayHi : sayHi2
    };

    var obj2 = {
        name : 'rose',
        sayHi : sayHi2
    };

    obj1.sayHi();
    obj2.sayHi();
    对象的遍历操作
        对象和数组的对比
            数组遍历
                数组的元素按照索引保存,索引是有序的,所以我们称数组是有序的数据存储方式
                采用普通for循环即可遍历
            对象遍历
                对象的属性按照属性名保存,属性名是无序的,所以我们称对象是无序的数据存储方式
                采用for..in循环即可遍历
                        var obj = {
        name : '韩梅梅',
        age : 21,
        gender : '女'
    };

    // for (循环变量声明 in 要遍历的对象) {}
    for (var key in obj) {
        // key 代表属性名,字符串形式,每次循环会自动获取到一个不重复的属性名
        // obj[key] 代表属性值

        console.log( obj[key] );
    }

原文地址:https://www.cnblogs.com/itxcr/p/11600139.html

时间: 2024-08-29 03:24:48

JavaScript基础(五)的相关文章

JavaScript 基础(五) 函数 变量和作用域

函数定义和调用 定义函数,在JavaScript中,定义函数的方式如下: function abs(x){ if(x >=0){ return x; }else{ return -x; } } 上述abs() 函数的定义如下: function 指出这是一个函数定义; abs 是函数的名称: (x) 括号内列出函数的参数,多个参数以,分隔: {...}之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句. 注意:函数体内部的语句在执行时,一旦执行到return 时,函数就执行完毕,并将结果

javascript基础学习(十五)

javascript之cookie 学习要点: cookie介绍 创建与获取cookie cookie的编码 cookie的生存期 cookie的路径 cookie的domain cookie的secure 一.cookie介绍 cookie实际上就是一些信息,这些信息以文件的形式存储在客户端计算机上.在javascript中,cookie主要用来保存状态,或用于识别身份. 二.创建与获取cookie 创建cookie的语法代码如下所示:document.cookie="name=value&q

javascript基础学习(五)

javascript之函数 学习要点: 函数的介绍 函数的参数 函数的属性和方法 系统函数 一.函数的介绍 1.函数就是一段javascript代码.可以分为用户自定义函数和系统函数.   如果一个函数是javascript内置的函数,就称为系统函数.如果函数是自己编写的函数,就是自定义函数. 2.在javascript用function来定义一个函数.function 函数名(参数1,参数2,...){<语句块>  return 返回值} (PS:return语句可以省略) 3.函数的嵌套定

web前端【第五篇】JavaScript基础

一.JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言) Netscape(网景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript 微软随后模仿在其IE3.0的产品中搭载了一个JavaScript的

学习笔记 第十五章 JavaScript基础

第15章   JavaScript基础 [学习重点] 了解JavaScript基础知识 熟悉常量和变量 能够使用表达式和运算符 正确使用语句 能够掌握数据类型和转换的基本方法 正确使用函数.对象.数组等核心知识和技法 能够编写简单的脚本,解决网页中常见特效和互动效果 15.1  JavaScript入门 JavaScript是一种轻量级.解释型的Web开发语言.现代浏览器都已嵌入了JavaScript引擎./sc 15.1.1 在网页中插入JavaScript代码 使用<script>标签,可

javascript基础学习(八)

javascript之日期对象 学习要点: 日期对象 将日期对象转换为字符串 将日期对象中的日期和时间转换为字符串 日期对象中的日期 日期对象中的时间 设置日期对象中的日期 设置日期对象中的时间 与毫秒相关的方法 一.日期对象 在javascript中并没有日期型的数据类型,但是提供了一个日期对象可以操作日期和时间. 日期对象的创建: new Date(); 二.将日期对象转换为字符串 将日期对象转换为字符串可以使用以下4种方法: date.toString();//将日期对象转换为字符串时,采

javascript基础学习(二)

javascript的数据类型 学习要点: typeof操作符 五种简单数据类型:Undefined.String.Number.Null.Boolean 引用数据类型:数组和对象 一.typeof操作符 typeof操作符用来检测变量的数据类型,操作符可以操作变量也可以操作字面量. 对变量或值运用typeof操作符得到如下值: undefined----如果变量是Undefined类型: boolean-------如果变量是Boolean类型: number-------如果变量是Numbe

Javascript基础篇小结

Javascript基础篇小结 字数9973 阅读3975 评论7 喜欢28 转载请声明出处 博客原文 随手翻阅以前的学习笔记,顺便整理一下放在这里,方便自己复习,也希望你有也有帮助吧 第一课时 入门基础 知识点: 操作系统就是个应用程序 只要是应用程序都要占用物理内存 浏览器本身也是一个应用程序 浏览器本身只懂得解析HTML 调用浏览器这个应用程序的一个功能绘制 1.javascript介绍 JavaScript操作DOM的本质是=获取+触发+改变 目的:就是用来操作内存中的DOM节点 修改D

JavaScript基础总结

JavaScript高级的学习在于对象的学习,而这些的基础就是JavaScript基础了,所以在学习高级之前先将JavaScript基础部分复习一下吧. 第一部分:变量 变量是贯穿了JavaScript学习和应用的每个方面,在变量部分我们需要掌握以下几个方面: 1 变量作用域 变量的作用域分为两个:全局作用域和局部作用域 全局作用域:指script标签下的全局范围内. 全局变量:指在script标签根节点声明的变量为全局变量,或者window.变量的方式获取的变量也为全局变量,或者函数中未被声明