JavaScript函数与对象
函数
函数的定义
- JavaScript中的函数和Python中的非常类似,只是定义方式有点区别。
// 普通函数定义 function f1() {console.log("Hello world!"); }// 带参数的函数 function f2(a, b) {console.log(arguments); // 内置的arguments对象console.log(arguments.length);console.log(a, b); }// 带返回值的函数 function sum(a, b){return a + b; } sum(1, 2); // 调用函数// 匿名函数方式 var sum = function(a, b){return a + b; } sum(1, 2);// 立即执行函数 (function(a, b){return a + b; })(1, 2);
- JavaScript中的函数和Python中的非常类似,只是定义方式有点区别。
函数的参数(arguments)
-
function add(a,b){console.log(a+b);console.log(arguments.length) }add(1,2)
-
全局变量和局部变量
- 局部变量:
在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。
全局变量:
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
变量生存周期:
JavaScript变量的生命期从它们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。
- 局部变量:
作用域
- 如果局部有,就用局部的
- 如果局部没有,就用全局的
- 如果都没有,就是undefined
- 方法名跟变量名重复的时候,后面的会覆盖前面的
1、 var city = "BeiJing"; function f() {var city = "ShangHai";function inner(){var city = "ShenZhen";console.log(city);}inner(); }f(); //输出结果是?2. var city = "BeiJing"; function Bar() {console.log(city); } function f() {var city = "ShangHai";return Bar; } var ret = f(); ret(); // 打印结果是?3.闭包 var city = "BeiJing"; function f(){var city = "ShangHai";function inner(){console.log(city);}return inner; } var ret = f(); ret();
例子
词法分析
-
JavaScript中在调用函数的那一瞬间,会先进行词法分析。
词法分析的过程:
当函数调用的前一瞬间,会先形成一个激活对象:Avtive Object(AO),并会分析以下3个方面:
1:函数参数,如果有,则将此参数赋值给AO,且值为undefined。如果没有,则不做任何操作。
2:函数局部变量,如果AO上有同名的值,则不做任何操作。如果没有,则将此变量赋值给AO,并且值为undefined。
3:函数声明,如果AO上有,则会将AO上的对象覆盖。如果没有,则不做任何操作。函数内部无论是使用参数还是使用局部变量都到AO上找。
内置对象和方法
对象的分类
JavaScript中的所有事物都是对象:字符串、数字、数组、日期,等等。在JavaScript中,对象是拥有属性和方法的数据。
我们在学习基本数据类型的时候已经带大家了解了,JavaScript中的Number对象、String对象、Array对象等。
自定义对象
- 形式上类似Python中的字典数据类型,字典的键即为对象的属性
var a = {"name": "Alex", "age": 18}; console.log(a.name); console.log(a["age"]);
- 遍历对象中的内容:
var a = {"name": "Alex", "age": 18}; for (var i in a){console.log(i, a[i]); }
- 创建对象:
var person=new Object(); // 创建一个person对象 person.name="Alex"; // person对象的name属性 person.age=18; // person对象的age属性
- 扩展:
// 父类构造函数 var Car = function (loc) {this.loc = loc; };// 父类方法 Car.prototype.move = function () {this.loc ++; };// 子类构造函数 var Van = function (loc) {Car.call(this, loc); };// 继承父类的方法 Van.prototype = Object.create(Car.prototype); // 修复 constructor Van.prototype.constructor = Van; // 扩展方法 Van.prototype.grab = function () {/* ... */ };
拓展
- 形式上类似Python中的字典数据类型,字典的键即为对象的属性
Date对象
- 创建Date对象
//方法1:不指定参数 var d1 = new Date(); console.log(d1.toLocaleString()); //方法2:参数为日期字符串 var d2 = new Date("2004/3/20 11:12"); console.log(d2.toLocaleString()); var d3 = new Date("04/03/20 11:12"); console.log(d3.toLocaleString()); //方法3:参数为毫秒数 var d3 = new Date(5000); console.log(d3.toLocaleString()); console.log(d3.toUTCString());//方法4:参数为年月日小时分钟秒毫秒 var d4 = new Date(2004,2,20,11,12,0,300); console.log(d4.toLocaleString()); //毫秒并不直接显示
- Date对象的方法:
var d = new Date(); //getDate() 获取日 //getDay () 获取星期 //getMonth () 获取月(0-11) //getFullYear () 获取完整年份 //getYear () 获取年 //getHours () 获取小时 //getMinutes () 获取分钟 //getSeconds () 获取秒 //getMilliseconds () 获取毫秒 //getTime () 返回累计毫秒数(从1970/1/1午夜)
- 创建Date对象
Json对象
var str1 = '{"name": "Alex", "age": 18}'; var obj1 = {"name": "Alex", "age": 18}; // JSON字符串转换成对象 var obj = JSON.parse(str1); // 对象转换成JSON字符串 var str = JSON.stringify(obj1);
RegExp对象
//RegExp对象//创建正则对象方式1 // 参数1 正则表达式(不能有空格) // 参数2 匹配模式:常用g(全局匹配;找到所有匹配,而不是在第一个匹配后停止)和i(忽略大小写)// 用户名只能是英文字母、数字和_,并且首字母必须是英文字母。长度最短不能少于6位 最长不能超过12位。// 创建RegExp对象方式(逗号后面不要加空格) var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$");// 匹配响应的字符串 var s1 = "bc123";//RegExp对象的test方法,测试一个字符串是否符合对应的正则规则,返回值是true或false。 reg1.test(s1); // true// 创建方式2 // /填写正则表达式/匹配模式(逗号后面不要加空格) var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/;reg2.test(s1); // true// String对象与正则结合的4个方法 var s2 = "hello world";s2.match(/o/g); // ["o", "o"] 查找字符串中 符合正则 的内容 s2.search(/h/g); // 0 查找字符串中符合正则表达式的内容位置 s2.split(/o/g); // ["hell", " w", "rld"] 按照正则表达式对字符串进行切割 s2.replace(/o/g, "s"); // "hells wsrld" 对字符串按照正则进行替换// 关于匹配模式:g和i的简单示例 var s1 = "name:Alex age:18";s1.replace(/a/, "哈哈哈"); // "n哈哈哈me:Alex age:18" s1.replace(/a/g, "哈哈哈"); // "n哈哈哈me:Alex 哈哈哈ge:18" 全局匹配 s1.replace(/a/gi, "哈哈哈"); // "n哈哈哈me:哈哈哈lex 哈哈哈ge:18" 不区分大小写// 注意事项1: // 如果regExpObject带有全局标志g,test()函数不是从字符串的开头开始查找,而是从属性regExpObject.lastIndex所指定的索引处开始查找。 // 该属性值默认为0,所以第一次仍然是从字符串的开头查找。 // 当找到一个匹配时,test()函数会将regExpObject.lastIndex的值改为字符串中本次匹配内容的最后一个字符的下一个索引位置。 // 当再次执行test()函数时,将会从该索引位置处开始查找,从而找到下一个匹配。 // 因此,当我们使用test()函数执行了一次匹配之后,如果想要重新使用test()函数从头开始查找,则需要手动将regExpObject.lastIndex的值重置为 0。 // 如果test()函数再也找不到可以匹配的文本时,该函数会自动把regExpObject.lastIndex属性重置为 0。var reg3 = /foo/g; // 此时 regex.lastIndex=0 reg3.test('foo'); // 返回true // 此时 regex.lastIndex=3 reg3.test('foo'); // 返回false // 所以我们在使用test()方法校验一个字符串是否完全匹配时,不推荐添加全局匹配模式g。// 注意事项2(说出来你可能不信系列): // 当我们不加参数调用RegExpObj.test()方法时, 相当于执行RegExpObj.test("undefined"), 并且/undefined/.test()默认返回true。 var reg4 = /^undefined$/; reg4.test(); // 返回true reg4.test(undefined); // 返回true reg4.test("undefined"); // 返回true
例子
Math对象
abs(x) 返回数的绝对值。 exp(x) 返回 e 的指数。 floor(x) 对数进行下舍入。 log(x) 返回数的自然对数(底为e)。 max(x,y) 返回 x 和 y 中的最高值。 min(x,y) 返回 x 和 y 中的最低值。 pow(x,y) 返回 x 的 y 次幂。 random() 返回 0 ~ 1 之间的随机数。 round(x) 把数四舍五入为最接近的整数。 sin(x) 返回数的正弦。 sqrt(x) 返回数的平方根。 tan(x) 返回角的正切。
转载于:https://www.cnblogs.com/fu-yong/p/8549918.html
JavaScript函数与对象相关推荐
- 关卡二: JavaScript函数及对象
前言 在 Java 语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在 Javascript 中,我们也可以定义自己的类,例如定义 User 类.Hashtable 类等等. ...
- javascript 函数与对象
javascript中的函数是非常重要的概念,也是比较难于理解的一个知识点! 下面就来聊聊函数: JS基于对象:什么是基于对象呢?简单的说所有代码都是"对象"; 比如函数: fun ...
- javascript函数以及对象
前言 这次的学习是关于函数和对象的内容,函数应该都不陌生,在上学中的时候数学就已经在接触了,不过虽然都是函数,但是有不同,一个是公式,一个是代码,那它可以带来什么的可能性呢,那就带你看看它的魅力吧!对 ...
- javascript函数、对象及变量、正则表达式(7.19)
tips: 1.javascript中"()"是用来调用函数的: 2.javascript中"."和"[]"访问对象的属性: 例如:obje ...
- 七、深入JavaScript函数,对象和作用域(三)
@Author:Runsen @Date:2020/5/26 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...
- javascript 函数和对象 再顺一顺
在javascript 中 函数也是对象 ,当然对象更是对象,是复杂类型,对于初学者或者自学者 总有一种变来变去的感觉 别的不说了看码 <!DOCTYPE html> <html l ...
- JavaScript 函数 ,对象
复习函数 函数定义 function函数名(){ 函数体 函数调用: 函数名() *参数:形参和实参 *形参:函数定义的时候函数名字后面的小括号里的变量就是参数,是不需要写var *实参:函数调用的时 ...
- 盘点JavaScript函数的基本知识
本文旨在提供web开发人员必须了解的所有JavaScript函数的基本知识. 函数于软件开发者而言并不是什么奇幻世界.如果你的日常活动涉及到编码,哪怕是一点点,那么在一天结束的时候,你一定创建/修改了 ...
- 深入探讨JavaScript函数
目录 介绍 什么是JavaScript函数? 定义函数 函数声明 函数表达式 箭头函数 函数提升 一流函数的属性 函数签名 重载 参数 默认参数 ES6之前的默认参数 默认参数ES6 函数类型 函数属 ...
- 深入理解 JavaScript 函数的特性与最佳实践
函数用于指定对象的行为.所谓的编程,就是将一组需求分解为一组函数和数据结构的技能. 1 函数对象 JavaScript 函数就是对象.对象是名值对的集合,它还拥有一个连接到原型对象的链接.对象字面量产 ...
最新文章
- 循环数组的最大子段和
- 如何解决div里面img图片下方有空白的问题?
- 学习计划2016//12/12
- mysql怎样dao出数据库_mysql怎么导出数据库?
- python伪代码书写规范_代码这样写更优雅(Python 版)(转载)
- 备份网站服务器文件路径,网站数据自动备份方法
- mysql font连接数据库_MySQL-Front连接数据库的详细操作流程
- 把你的火狐浏览器改成Chrome样式
- 2114. 句子中的最多单词数
- 华为鸿蒙os2.0更新,鸿蒙OS2.0更新了吗?更新方法、更新包大小、使用体验等都来了...
- python进阶与数据操控_python进阶(mysql:表操作、数据操作、数据类型)(示例代码)...
- java中如何表示圆周率
- 国家开放大学-农村社会学-形考作业4
- Windows系统安装运行库
- 谷歌chrome浏览器 抖动问题
- 网页源代码保护(禁止右键、复制、另存为、查看源文件)
- 【转】ubuntu下为APT设置代理
- 信息系统安全等级保护、安全策略设计原则及安全方案笔记
- java集合(附源码分析)
- 纸上得来终觉浅(experience is the best teacher)