首页 文章 精选 留言 我的

精选列表

搜索[JavaScript],共9118篇文章
优秀的个人博客,低调大师

从零开始学 Web 之 JavaScript(三)函数

大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧! 一、函数 1、函数的定义 // 第一种 function fn1(){ console.log("我是第一种定义方法!"); } // 第二种 var fn2 = function (){ console.log("我是第二种定义方法!"); }; // 注意分号 function (){ console.log("我是第二种定义方法!"); }(); // 第二种方式的调用方式之一:函数的自调用 //第三种 var fn3 = new Function("console.log('我是第三种定义方法!')"); 第一种:(函数的声明)第一种定义方法最强大,定义完毕后,在哪里使用都可以,无位置限制。第二种:(函数表达式:匿名函数) 后两种定义方法是有局限性的。(使用函数必须在定义函数之后) 2、函数的调用 函数名(); 3、函数名 要遵循驼峰命名法。 不能同名(函数重载),否则后面的函数会覆盖前面的函数。 //打印函数名,就等于打印整个函数。 console.log(fn); //打印执行函数,就等于打印函数的返回值。 console.log(fn()); 4、形参和实参 形参不需要写 var. 形参的个数和实参的个数可以不一致 。 5、返回值 如果函数没有显示的使用 return 语句 ,那么函数有默认的返回值:undefined 如果函数使用 return 语句,但是 return 后面没有任何值,那么函数的返回值也是:undefined. 6、变量和作用域 全局变量:在 script 使用 var 定义的变量(所有的 script 共享其全局性,js 里面没有块级作用域概念,只有全局作用域和局部作用域)。 隐式全局变量:在 script 没有 var 的变量。 function fn(){ var a = b = c = 1; // b和c就是隐式全局变量(等号) var a = 1; b = 2; c = 3; // b和c就是隐式全局变量(分号) var a = 1 , b = 2 , c = 3; // b和c就不是隐式全局变量(逗号) } (全局变量是不能被删除的,隐式全局变量是可以被删除的) var num1 = 10; num = 20; delete num1; delete num2; console.log(typeof num1); // number console.log(typeof num2); // undefined 局部变量:函数内部用 var 定义的变量和形参。 6.1、变量声明提升(预解析) 作用:查看语法错误。js的解析器在页面加载的时候,首先检查页面上的语法错误。把变量声明提升起来。(变量声明提升和函数整体提升) 6.2、变量的提升 只提升变量名,不提升变量值。 consolas.log(aaa);// 打印的结果是 undefined ,因为只提升变量名,不提升变量值。 var aaa = 111; 在函数范围内,照样适用。 6.3、函数的提升 function 直接定义的方法:整体提升(上面说的第一种函数定义的方法). fn(); var aaa = 111; function fn(){ //变量声明提升在函数内部照样实用。 //函数的就近原则(局部变量作用域),打印的aaa不是111,而是 undefined。 console.log(aaa); // undefined var aaa = 222; } 预解析会分块: 多对的 script 标签中函数重名的话,预解析不会冲突。也就是预解析的作用域是每一个的 script 标签。 var先提升,function再提升: 示例: console.log(a); // 输出a函数体 function a() { console.log("aaaaa"); } var a = 1; console.log(a); // 输出1 打印第一个结果的时候,var会提升,之后 function 再提升,但是函数a和变量a重名,function的a在后面覆盖掉变量a,所以第一个输出 a 函数体. 第二个前面var a = 1;提升之后,这个位置就相当于只有 a = 1; 赋值,所以第二个打印1. 6.4、匿名函数 作用大致如下: //1.直接调用 (function (){ console.log(1); })(); //2.绑定事件 document.onclick = function () { alert(1); } //3.定时器 setInterval(function () { console.log(444); },1000);

优秀的个人博客,低调大师

从零开始学 Web 之 JavaScript(二)变量

大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧! 一、变量 1、变量的声明和初始化 var number; // 变量的声明,没有赋值 var name = "Daotin"; // 变量的初始化 2、命名规则(驼峰命名) 变量命名必须以字母或是**下标符号 "_" 或者 "$" 为开头。 变量名长度不能超过 255 个字符。 变量名中不允许使用空格,首个字不能为数字。 不用使用脚本语言中保留的关键字及保留符号作为变量名。 变量名区分大小写。 汉语可以作为变量名。但是不建议使用! 3、数据类型 查看数据类型的方法:typeof name; 或 typeof(name); PS:null 的数据类型是 Object。 基础数据类型:String,Number,Boolean,unsigned、null 复杂数据类型:Object,function,Array,Date,Error 等 4、Number 4.1、进制 var num = 10; // 十进制 var num = 012; // 八进制:0开头 var num = 0xA; // 十六进制:0x开头 4.2、数值范围 最小值: Number.MIN_VALUE ,这个值为: 5e-324 最大值: Number.MAX_VALUE ,这个值为: 1.7976931348623157e+308 无穷大: Infinity无穷小: -Infinity 4.3、不要用小数去验证小数 var num1 = 0.1; var num2 = 0.2; console.log(num1+num2); // 0.30000000000000004 console.log(0.07*100); // 7.000000000000001 4.4、NaN NaN:(Not a Number)本来应该得到一个数值的,但是结果却并不是一个数值。 console.log("abc"/18); // 结果是NaN 1、undefined 和任何数值计算为 NaN; 2、NaN 与任何值都不相等,包括 NaN 本身。 3、isNaN(); 任何不能被转换为数值的值都会导致这个函数返回 true。 5、String 使用单引号或者双引号均可。 获取字符串的长度使用 变量名.length 无法输出的字符,记得使用转义字符(\t , \, ", \ 等) 字符串拼接可以使用 + ,像在 Java 一样。 当一个是字符串,另一个是数字,并且使用 乘,减,除 号的时候,字符串会转换成数字进行计算,转换失败返回NaN。 js 没有字符类型只有字符串类型,字符串使用 "" 或者 '' 都是可以的。 字符串是常量不可变的。 示例: var str = "hello"; str[0] = "w"; console.log(str); // 还是 hello var str = "hello"; str = "world"; console.log(str); // 是 world,这个不是改变了当前str地址的字符串的值,而是str指向了新的字符串,旧的字符串的值仍然没有更改。 6、Boolean Boolean类型只有两个字面量: true 和 false 。但是所有类型均有与这两个 Boolean 值等价的值。 下面类型为 true:true、除0数字、"something"、Object(任何对象)下面类型为 false:false、0 、""(空字符串)、undefined 、null、NaN 7、undefined 与 null 虽然 undefined 和 null 都为 false,但是他们的区别是: 在进行数字运算的时候,null + 10 = 10;undefined + 10 = NaN. 任何数据类型和 undefined 运算都是 NaN; 任何值和 null 运算,null 可看做 0 运算。 8、数据类型转换 8.1、其他类型转换成String 变量+"" 或者 变量+"其他变量" String(变量) 变量.toString(); // 注意:undefined 和 null 不可以 var bool = true; var num = 111; var aaa; var bbb = null; console.log(typeof(bool+"")); // string console.log(typeof(num+"")); // string console.log(typeof(aaa+"")); // string console.log((aaa+"")); // undefined console.log(typeof(bbb+"")); // string 8.2、其他类型转换成 Number 此转换容易产生 NaN,一旦被转换的变量中含有非数字字符,都容易出现 NaN. **1. 变量 -*/ 一个数字(有非数字字符会出现 NaN)** var num1 = "11" - 0; var num2 = "11" * 1; var num = "11" / 1; 2. Number(变量);(有非数字字符会出现NaN) Number("11"); Number(""); // 空字符串返回 0 3. parseInt() 和 parseFloat()(译为取整和取浮点数) 空字符串:parseInt("") 和 parseFloat("") 返回 NaN。 parseInt(变量):如果变量中首字符为字母则结果为 NaN。否则取出现首个非数字前的整数。 123 = parseInt(“123.123aaaa”); parseFloat(变量):如果变量中首字符为字母则结果为 NaN。否则取出现首个非数字前的浮点数。(如果没有小数的话取整) 123.123 = parseFloat(“123.123aaaa”); PS: true 数值为 1;false 为0; null 的数值类型为 0; undefined 无数值类型或者为 NaN。 8.3、其他类型转换成 Boolean 任何数据类型都可以转换成 boolean 类型,所以和以上两个转换不同。将任意类型作为参数传入 Boolean(参数) 中,都可以转换成布尔值。 下面类型为 true:true、除0数字、"something"、Object(任何对象)下面类型为 false:false、0 、""(空字符串)、undefined 、null、NaN Boolean(参数);

优秀的个人博客,低调大师

JavaScript中Object.keys、Object.getOwnPropertyNames区别

定义 Object.keys 定义:返回一个对象可枚举属性的字符串数组; Object.getOwnPropertyNames 定义:返回一个对象可枚举、不可枚举属性的名称; 属性的可枚举性、不可枚举性 定义:可枚举属性是指那些内部 “可枚举” 标志设置为 true 的属性,对于通过直接的赋值和属性初始化的属性,该标识值默认为即为 true,对于通过 Object.defineProperty 等定义的属性,该标识值默认为 false。 例子 var obj = { "prop1": "v1" }; Object.defineProperty(obj, "prop2", { value: "v2", writable: false }); console.log(Object.keys(obj).length); //output:1 console.log(Object.getOwnPropertyNames(obj).length); //output:2 console.log(Object.keys(obj)); //output:Array[1] => [0: "prop1"] console.log(Object.getOwnPropertyNames(obj)); //output:Array[2] => [0: "prop1", 1: "prop2"] 内置的判断,访问和迭代方法 功能 可枚举 可枚举、不可枚举 判断 propertyIsEnumerable in/hasOwnProperty 访问 Object.keys Object.getOwnPropertyNames 迭代 for..in.. Object.getOwnPropertyNames 实战 var obj = { "prop1": "v1" }; Object.defineProperty(obj, "prop2", { value: "v2", writable: true }); console.log(obj.hasOwnProperty("prop1")); //output: true console.log(obj.hasOwnProperty("prop2")); //output: true console.log(obj.propertyIsEnumerable("prop1")); //output: true console.log(obj.propertyIsEnumerable("prop2")); //output: false console.log('prop1' in obj); //output: true console.log('prop2' in obj); //output: true for (var item in obj) { console.log(item); } //output:prop1 for (var item in Object.getOwnPropertyNames(obj)) { console.log(Object.getOwnPropertyNames(obj)[item]); } //ouput:[prop1,prop2] 相关链接 Object.hasOwnProperty() Object.propertyIsEnumerable()Object.getOwnPropertyNames()Object.keys() 属性的可枚举性和所有权 如果本文对你有所帮助,请打赏——1元就足够感动我:) 联系邮箱:intdb@qq.com 我的GitHub: https://github.com/vipstone 关注公众号: 作者: 王磊 出处: http://vipstone.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,请标明出处。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册