var函数

干货分享 -- Math

邮差的信 提交于 2019-12-23 17:55:53
昼猫笔记 JavaScript -- Math Math也是JS的内置对象,但是它不是一个构造函数,它属于一个工具类不用创建对象,它封装了数学运算相关的属性和方法,今天就来写下常用的函数【API(application progrom interface 应用程序开发接口)】 常用属性 PI 表示的圆周率 常用方法 abs() 可以用来计算一个数的绝对值 console.log(Math.abs(-1)) // 1 round() 四舍五入取整 console.log(Math.round(3.22)) // 3 ceil() 向上取整,获取最接近的整数(大于或者等于当前数字) console.log(Math.ceil(3.000022)) // 4 console.log(Math.ceil(3)) // 3 floor() 向下取整 console.log(Math.floor(3.22)) // 3 max() 取最大值 console.log(Math.max(3,4,6,7,2,1,4,0)) // 7 min() 取最小值 console.log(Math.min(3,4,6,7,2,1,4,0)) // 0 获取数组中最大数,最小数 var arr = [3, 4, 6, 7, 2, 1, 4, 0] console.log(Math.max.apply(null,

array.prototype.slice.call(arguments)

不羁岁月 提交于 2019-12-23 08:18:40
我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js对象与com对象不能进行转换) 如: 1 var a={length:2,0:'first',1:'second'}; 2 Array.prototype.slice.call(a);// ["first", "second"] 3 4 var a={length:2}; 5 Array.prototype.slice.call(a);// [undefined, undefined] 可能刚开始学习js的童鞋并不是很能理解这句为什么能实现这样的功能。比如我就是一个,所以,来探究一下。 首先,slice有两个用法,一个是String.slice,一个是Array.slice,第一个返回的是字符串,第二个返回的是数组,这里我们看第2个。 Array.prototype.slice.call(arguments)能够将arguments转成数组,那么就是arguments.toArray().slice();到这里,是不是就可以说Array.prototype.slice.call(arguments)的过程就是先将传入进来的第一个参数转为数组,再调用slice? 再看call的用法

Node.js实战15:通过udp传输文件。

我只是一个虾纸丫 提交于 2019-12-23 01:40:13
本文将要写一个udp服务器,和一个udp客户端,并实现客户端发送文件给服务器。 服务器端 代码如下: var dgram = require ( "dgram" ) ; server ( ) ; function server ( ) { var socket = dgram . createSocket ( "udp4" ) ; socket . on ( "message" , function ( msg , rinfo ) { process . stdout . write ( msg . toString ( ) ) ; } ) ; socket . on ( "listening" , function ( ) { console . log ( "server ready:" , socket . address ( ) ) ; } ) ; socket . bind ( 8000 ) ; } 代码解读: 1、dgram是nodejs的内置模块,提供了 UDP 数据包 socket 的实现。 2、server()函数提供了监听和消息响应方法,当接收到数据时,会进行输出显示。 客户端 代码如下: var dgram = require ( "dgram" ) ; var fs = require ( "fs" ) ; client ( ) ; function

js常见面试题

和自甴很熟 提交于 2019-12-23 00:05:14
1. javascript的typeof返回哪些数据类型. 答案:string,boolean,number,undefined,function,object 2. 例举3种强制类型转换和2种隐式类型转换? 答案:强制(parseInt,parseFloat,number) 隐式(== ===) 3. split() join() 的区别 答案:前者是将字符串切割成数组的形式,后者是将数组转换成字符串 4. 数组方法pop() push() unshift() shift() 答案:push()尾部添加 pop()尾部删除 unshift()头部添加 shift()头部删除 5. IE和标准下有哪些兼容性的写法 答案: var ev = ev || window.event document.documentElement.clientWidth || document.body.clientWidth Var target = ev.srcElement||ev.target 6. ajax请求的时候get 和post方式的区别 答案: 一个在url后面 ,一个放在虚拟载体里面 get有大小限制(只能提交少量参数) 安全问题 应用不同 ,请求数据和提交数据 7. call和apply的区别 答案: Object.call(this,obj1,obj2,obj3) Object

JavaScript 权威指南(4): JavaScript 的作用域和提升

女生的网名这么多〃 提交于 2019-12-22 13:40:14
JavaScript 权威指南(4): JavaScript 的作用域和提升 原文 地址:http://dyy.im/4406.html 你知道下面的 JavaScript 程序执行时会输出什么值吗? var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 答案是“10”,吃惊吗?那么下面的可能会真的让你大吃一惊: var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a); 这里浏览器会弹出“1”。这里发生了什么呢?这似乎看起来是奇怪,未知,让人混淆的,但这实际上是这门语言一个强大和富有表现力的特性。我不知道这一特性行为是否有标准名字,但我喜欢这个术语“提升(hoisting)”。本文试图揭示这一特性的机制,但首先让我们理解 JavaScript 的作用域。 JavaScript中的作用域(scope) JavaScript初学者最容易混淆的地方是作用域。实际上,不只是初学者。我遇到过许多经验丰富的JavaScript程序员,却不完全明白作用域。JavaScript的作用域如此容易混淆的原因是它看起来很像C家族的语言(类C语言)。考虑下面的C程序: #include <stdio.h> int

javascript变量声明提升

删除回忆录丶 提交于 2019-12-22 13:37:06
1.javascript引擎在运行一个js文件时,会把所有的变量声明提升到 当前作用域 的最前面,这叫变量声明提升。 因此,如果在当前作用域中 ,在某变量声明之前访问了该变量,则会返回undifined;而不是直接报错(未定义); 2.不只是变量声明,函数声明也会提升。 这里要注意函数表达式和函数声明的区别。函数表达式不会被提升,而函数声明可以提升。 先看一段代码 var v = "hello"; (function(){ console.log(v); var v = "world"; })(); 这段代码运行的结果是什么呢? 答案是:undefined 这段代码说明了两个问题, 第一,function作用域里的变量v遮盖了上层作用域变量v。代码做少些变动 var v = "hello"; if(true){ console.log(v); var v = "world"; } 输出结果为”hello”,说明 javascript是没有块级作用域的 。 函数是JavaScript中唯一拥有自身作用域的结构。 第二,在function作用域内,变量v的声明被提升了。所以最初的代码相当于: var v = "hello"; (function(){ var v; //declaration hoisting console.log(v); v = "world"; })(); 声明

首字母大写,其它字母小写

核能气质少年 提交于 2019-12-22 13:30:39
首字母大写,其它字母小写 说明:map()是一个高阶函数,他可以把一个函数作用在一个数组上 方法一 var str = [ 'adam' , 'LISA' , 'barT' ] ; var result = str . map ( function ( x ) { return x . charAt ( 0 ) . toUpperCase ( ) + x . slice ( 1 ) . toLowerCase ( ) ; } ) console . log ( result ) //[ 'Adam', 'Lisa', 'Bart' ] 方法二 var str = [ 'adam' , 'LISA' , 'barT' ] ; var result = str . map ( ( s ) => { var str = "" ; str += s [ 0 ] . toUpperCase ( ) ; for ( var i = 1 ; i < s . length ; i ++ ) { str += s [ i ] . toLowerCase ( ) ; } return str ; } ) console . log ( result ) ; 来源: CSDN 作者: 拴拴爱学习 链接: https://blog.csdn.net/qq_43204698/article/details

js中创建命名空间的几种写法

半世苍凉 提交于 2019-12-22 11:23:21
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hello var'; }; function sayHello(name) { return 'Hello function'; }; sayHello(); 最终的输出为 > "Hello var" 为什么会这样,实际上JavaScript的是按如下顺序解析的。 function sayHello(name) { return 'Hello function'; }; var sayHello = function() { return 'Hello var'; }; sayHello(); 不带var的function声明被提前解析了,因此现代的JS写法建议你始终使用前置var声明所有变量; 避免全局变量名冲突的最好办法还是创建命名空间,下面是在JS中合建命名空间的几种常用方法。 通过函数(function)创建 这是一种比较常见的写法,通过声明一个function实现,函数里设置初始变量,公共方法写入prototype,如: var NameSpace = window.NameSpace || {}; /* Function */ NameSpace.Hello =

JavaScript创建命名空间

谁都会走 提交于 2019-12-22 03:13:58
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>在JavaScript中实现命名空间</title> <script language="JavaScript"> Namespace = new Object(); // 全局对象仅仅存在register函数,参数为名称空间全路径,如"Grandsoft.GEA" Namespace.register = function(fullNS) { // 将命名空间切成N部分, 比如Grandsoft、GEA等 var nsArray = fullNS.split('.'); var sEval = ""; var sNS = ""; for (var i = 0; i < nsArray.length; i++) { if (i != 0) sNS += "."; sNS += nsArray[i]; // 依次创建构造命名空间对象(假如不存在的话)的语句 // 比如先创建Grandsoft,然后创建Grandsoft.GEA,依次下去 sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();" } if (sEval !

预编译 AO

人盡茶涼 提交于 2019-12-22 02:16:28
js运行时会进行三件事: 1.语法分析 2.预编译 3.解释执行 语法分析会在代码执行前对代码进行通篇检查,以排除一些低级错误 预编译发生在代码执行的前一刻 解释执行就是执行代码 预编译的作用: 1、函数声明整体提前; 写出一个函数声明,不管写在哪里,系统总会将其提升到逻辑最前面。 2、变量声明提前 例如: document . write ( x ) ; //undefined var x = '你好' ; 相当于 var x ; //提前 document . write ( x ) ; //undefined x = '你好' ; 预编译前奏 1、任何变量,如果变量未经声明就赋值,此变量就为全局对象所有, 2、一切声明的全局变量,全是window的属性; 预编译四个步骤: 1、创建AO(activation object/执行期上下文)对象 2、找形参和变量声明,将变量和形参作为AO的属性名,值为undefined 3、将实参值和形参统一 4、在函数中找函数声明,值赋予函数体 根据预编译四个步骤逐步分析: function fun ( x ) { console . log ( x ) ; var x = 'beautiful' ; console . log ( x ) ; function x ( ) { } console . log ( x ) ; var y =