var函数

深入浅出 JavaScript 变量、作用域和内存 v 0.5

时光怂恿深爱的人放手 提交于 2020-03-04 16:25:05
本文主要从原理入手分享变量和作用域的相关知识,最后结合本文所分享知识,再次深入了解下闭包的运行原理。 主要参考《JS高级程序设计》 《JS权威指南》 《高性能 JS》 三本书。 目录 1 变量 1.1 变量的声明 1.2 变量类型的特点 2 执行环境和作用域 3 再谈谈闭包 变量 对 JavaScript 稍微有点了解的同学都知道,JavaScript 中的 变量 与其他语言的变量有很大区别。 JS 的弱类型的特性决定了变量只是在特定时间( 生命周期 , 作用域 中)用于保存特定值的一个名字而已。 一个变量可以在生命周期内任意改变类型。(太灵活了以至于好复杂) JavaScript 变量可以用来保存两种类型的值: 基本类型值 和 引用类型值 。 变量的声明 在JavaScript 程序中,使用一个变量之前应该先声明它。变量使用 var 关键字声明的。 如果在声明的时候没有进行初始化,那么默认初始化为undefined。 重复声明和遗漏声明 使用 var 关键字重复声明变量时合法的而且无害的,如果重复声明带有初始化,那么该声明和一条普通的赋值语句没什么两样。 在非严格模式下,给未声明的变量赋值,JS 会在全局作用域中创建一个同名变量,并赋值。(这会造成很多bug,因此应该使用 var 来声明变量。) 保存引用类型值的变量我们可以为其添加、改变和删除其属性和方法 。 var

js再学习笔记

人盡茶涼 提交于 2020-03-04 10:01:40
#js再学习笔记 ##基本 1.js严格区分大小写 2.js末尾的分号可加,也可不加 3.六种数据类型(使用typeof来检验数据的类型) `typeof` - undefined: `var name;` ------就是已定义未赋值或者未定义而使用 **针对变量来说**,占据一个变量的位置而不使用。 - boolean-------布尔类型 - string: `var name="zhangsan"; var englishname='tom';` -----字符串类型,单引号,双引号没什么区别。 - number ----整形和浮点型。 js里边最大的数字 `Number.MAX_VALUE`最小数字 `Number.MIN_VALUE`,无限大 `infinity` - null ---是一个对象。可以当做占位符使用 `var people=null;` ##运算 4. `==` :值比较 ; `===` :值和数据类型都比价 5. `+` :当两个参数是数字做加法运算。当两个参数有一个是字符串类型,做连接。 6. `&&`:js中的与运算,在js内部进行数据类型转换。最后的结果并不是布尔类型而是参与运算中参数 的一个值。 `1&&2`结果为true(其实是2); `0&&5`结果为false(其实是0,0已经决定结果,把右边给短路了) `""&&"hello"

javascript常用方法函数收集

独自空忆成欢 提交于 2020-03-03 21:29:16
字符串长度截取 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 function cutstr(str, len) { var temp, icount = 0, patrn = /[^\x00-\xff]/,strre = "" ; for ( var i = 0; i < str.length; i++) { if (icount < len - 1) { temp = str.substr(i, 1); if (patrn.exec(temp) == null ) { icount = icount + 1 } else { icount = icount + 2 } strre += temp } else { break ; } } return strre + "..." } 替换全部 1 2 3 String.prototype.replaceAll = function (s1, s2) { return this .replace( new RegExp(s1, "gm" ), s2) } 清除空格 1 2 3 4 String.prototype.trim = function () { var reExtraSpace = /^\s*(.*?)\s+$/; return this .replace

Javascript常用方法函数收集(二)

别等时光非礼了梦想. 提交于 2020-03-03 21:08:30
Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); } 32.判断是否打开视窗 function isViewportOpen() { return !!document.getElementById('wixMobileViewport'); } 33.获取移动设备初始化大小 function getInitZoom(){ if(!this._initZoom){ var screenWidth = Math.min(screen.height, screen.width); if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){ screenWidth = screenWidth/window.devicePixelRatio; } this._initZoom = screenWidth /document.body.offsetWidth; } return this._initZoom; } 34.获取移动设备最大化大小

如何在Node.js中创建HTTPS服务器?

こ雲淡風輕ζ 提交于 2020-03-03 21:05:11
给定一个SSL密钥和证书,如何创建HTTPS服务? #1楼 Express API文档 对此进行了清楚的说明。 此外, 此答案还 提供了创建自签名证书的步骤。 我已经从 Node.js HTTPS文档中 添加了一些注释和 摘要 : var express = require('express'); var https = require('https'); var http = require('http'); var fs = require('fs'); // This line is from the Node.js HTTPS documentation. var options = { key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), cert: fs.readFileSync('test/fixtures/keys/agent2-cert.cert') }; // Create a service (the app object is just a callback). var app = express(); // Create an HTTP service. http.createServer(app).listen(80); // Create an HTTPS service

JavaScript常用方法函数收集

心已入冬 提交于 2020-03-03 21:02:21
本文中,收集了一些比较常用的Javascript函数,希望对学习JS的朋友们有所帮助。 1. 字符串长度截取 function cutstr(str, len) { var temp, icount = 0, patrn = /[^\x00-\xff]/, strre = ""; for (var i = 0; i < str.length; i++) { if (icount < len - 1) { temp = str.substr(i, 1); if (patrn.exec(temp) == null) { icount = icount + 1 } else { icount = icount + 2 } strre += temp } else { break; } } return strre + "..." } 2. 替换全部 String.prototype.replaceAll = function(s1, s2) { return this.replace(new RegExp(s1, "gm"), s2) } 3. 清除空格 String.prototype.trim = function() { var reExtraSpace = /^\s*(.*?)\s+$/; return this.replace(reExtraSpace, "$1") } 4.

javascript常用方法函数收集

冷暖自知 提交于 2020-03-03 21:01:39
字符串长度截取 function cutstr ( str , len ) { var temp , icount = 0 , patrn = /[^\x00-\xff]/ , strre = "" ; for ( var i = 0 ; i < str . length ; i ++) { if ( icount < len - 1 ) { temp = str . substr ( i , 1 ); if ( patrn . exec ( temp ) == null ) { icount = icount + 1 } else { icount = icount + 2 } strre += temp } else { break ; } } return strre + "..." } 替换全部 String . prototype . replaceAll = function ( s1 , s2 ) { return this . replace ( new RegExp ( s1 , "gm" ), s2 ) } 清除空格 String . prototype . trim = function () { var reExtraSpace = /^\s*(.*?)\s+$/ ; return this . replace ( reExtraSpace , "$1" )

js全局访问局部变量

旧城冷巷雨未停 提交于 2020-03-03 09:55:27
1、   在函数内使用this.name(变量名)的方式赋值, 当函数作为普通函数调用时 ,在函数外部可以直接访问到,这是因为这里的this指向window: function fn(){ var r = 2 ; this.ss = 0; this.sum=function(num1,num2){    return (num1+num2)*r; }; } fn(); //var b = new fn(); console.log(ss); //0 console.log(window.sum(1,2)); //6 console.log(sum(1,2)); //6    当函数作为方法函数调用时, 情况又有所不同,这时候this指向发生变化,指向自身: function fn(){ var r = 2 ; this.ss = 0; this.sum=function(num1,num2){    return (num1+num2)*r; }; } var b = new fn(); /* console.log(ss); //error 报错 console.log(window.sum(1,2)); //error 报错 console.log(sum(1,2)); //error 报错 */ //可以通过实例访问 console.log(b.ss); //0

Web_javascript-ECMAScript

て烟熏妆下的殇ゞ 提交于 2020-03-03 00:30:52
javascript介绍 Web前端有三层: HTML:从语义的角度,描述页面 结构 CSS:从审美的角度,描述 样式 (美化页面) JavaScript:从交互的角度,描述 行为 (提升用户体验) 其中JavaScript基础又分为三个部分: ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。 DOM:文档对象模型,操作网页上的元素的API。比如让盒子移动、变色、轮播图等。 BOM:浏览器对象模型,操作浏览器部分功能的API。比如让浏览器自动滚动。 JavaScript历史背景介绍 布兰登 • 艾奇(Brendan Eich,1961年~),1995年在网景公司,发明的JavaScript。 一开始JavaScript叫做LiveScript,但是由于当时Java这个语言特别火,所以为了傍大牌,就改名为JavaScript。如同“北大”和“北大青鸟”的关系。“北大青鸟”就是傍“北大”大牌。 同时期还有其他的网页语言,比如VBScript、JScript等等,但是后来都被JavaScript打败了,所以现在的浏览器中,只运行一种脚本语言就是JavaScript ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers

你不知道的JavaScript上卷笔记

社会主义新天地 提交于 2020-03-03 00:25:58
你不知道的JavaScript上卷笔记 前言 You don't know JavaScript 是github上一个系列文章 初看到这一标题的时候,感觉怎么老外也搞标题党,用这种冲突性比较强的题目吸引眼球,以致最初真没去看内容。直到出了中文版《你不知道的JavaScript》,一看评价大家都说好,买来一读,内容果然很好,很多地方,让我这个半路转行JavaScript的人豁然开朗。中文版现在出了上卷,中卷应该很快会推出,下卷就要等久一点了 作用域和闭包 作用域是什么   1.现代JavaScript已经不再是解释执行的,而是编译执行的。但是与传统的编译语言不同,它不是提前编译,编译结果不能进行移植。编译过程中,同样会经过 分词/词法分析 , 解析/语法分析 , 代码生成 三个阶段。   2.以var a = 2;语句为例,对这一程序语句对处理,需要经过 引擎 , 编译器 , 作用域 三者的配合。其中, 引擎 从头到尾负责整个javascript程序的编译和执行过程; 编译器 负责语法分析和代码生成; 作用域 负责收集并维护由所有声明的标识符组成的系列查询,并实施一套规则,确定当前执行的代码对这些标识符的访问权限。   3.对于var a = 2;编译器首先查找作用域中是否已经有该名称的变量,然后引擎中执行编译器生成的代码时,会首先查找作用域。如果找到就执行赋值操作,否则就抛出异常