var函数

js预解析面试题

 ̄綄美尐妖づ 提交于 2020-01-09 22:49:12
js预解析一直是面试的重点,下面是我自己整理的一些预解析的面试题,基本上是由简到难的顺序排列的,每一道题的答案都自己验证过了,并附上了详细的解释,希望能对你有帮助 < ! DOCTYPE html > < html > < head > < meta charset = "UTF-8" > < title > < / title > < / head > < body > < script type = "text/javascript" > //01 alert ( a ) ; a = 0 ; //报错,a is not defined:不带var的变量没有提升 //02 alert ( a ) ; //undefined:带var变量预解析时存在提升 var a = 0 ; alert ( a ) ; //0 //03 alert ( a ) ; //函数原样输出:函数和带var的变量重名,带var的变量被忽略 var a = '我是变量' ; function a ( ) { alert ( '我是函数' ) } alert ( a ) ; //我是变量:重新赋值a = '我是变量' //04 alert ( a ) ; //1. 函数原样输出 a ++ ; alert ( a ) ; //2. NaN var a = '我是变量' ; function a ( ) {

想减少程序运行的BUG吗?那么来了解一下纯函数吧--减少BUG利器

有些话、适合烂在心里 提交于 2020-01-09 20:15:12
什么是纯函数? 纯函数是在调用该函数,函数执行的时候,不会修改全局变量,不依赖与全局变量,不改变其他的作用域,并且一定要返回值。总体上来说满足3个条件。 (1.有返回值(return) 2.不依赖于全局变量 3.不改变其他的作用域(GO),是利用的自己的AO(在传递参数的时候实现)) 反例: var num = 18; function compare(x){ return x > num; } console.log(compare(20)); //true 解释:这个函数不是纯函数,因为返回值依赖外部作用域的num。 纯函数 function compare(x, num){ return x > num; } console.log(compare(20, 18)); //true 解释:这个函数只与传进来的参数有关,不依赖外界,与其无关的作用域里的变量无关;同时,函数执行完毕后,没有对外界产生影响(没有修改外界的变量的值)。 接着看 var num = 18; function compare(x, num){ //预编译时,使用的是compare函数作用域的num,依旧是纯函数 //num = 19; //代码片段1(此处不用看,在下一步与eg4对比中使用) return x > num; } console.log(compare(20, num)); //true /

PHP基础语法

蹲街弑〆低调 提交于 2020-01-09 17:59:29
对于字符串中的指定字符做增删改查操作 $string='abcdef'; //查找 echo $string{0}; echo '<br/>'; //注意,修改的时候只能一个字符替换一个字符 $string{1}='z'; echo $string;//azcdef echo '<br/>'; $string{4}='!'; echo $string;//azcd!f echo '<hr/>'; $string='abc'; $string{0}='hello'; echo $string;//hbc echo '<hr/>'; //不要对于中文字符做操作 $string='你好'; var_dump($string);//'你好' (length=6) echo '<hr/>'; //删除 不知道为啥这部分我做了没效果,还是输出原来的字符串; 如果把''改成' ',原来的字符位置又会多出一个空格,不明白不明白?? $string='abcdef'; $string{2}=''; echo $string; //abcdef echo '<br/>'; $string{0}=''; //abcdef echo $string; //添加字符 echo '<br/>'; $string='abc'; $string{3}='d';//abcd echo $string; echo '

JavaScript--数组方法使用

和自甴很熟 提交于 2020-01-09 13:50:37
学习完数组的声明、赋值、类型判断,我们开始了解一下数组都有什么方法,但是为了知道这些方法有什么用,我还会举例进行操作。 一、数组转化为字符串(不会改变原数组的值) 1、toString()方法:可以使我们将数组转为每项以逗号隔开的字符串; var hhh = [1, 2, 3]; /*转换方法*/ console.log(hhh.toString()); //1,2,3 2、join()方法:可以自己指定字符串的形式,如果我们传入的是“*”,那么最终的字符串形式就是以*隔开的字符串; var hhh = [1, 2, 3]; /*转换方法*/ console.log(hhh.join('/')); //1/2/3 二、像栈一样操作数组 栈里面的数据特点是后进先出 所以最先收到影响的就是数组尾部--因为它们是后来才进来的(栈方法都会改变原数组的值) 1、push()方法:从数组末尾添加一些项 返回值是操作后的数组长度; var hhh = [1, 2, 3]; //接受任意数量的项,并将项添加至数据末尾,最后返回数组最终长度 var rtnvalue = hhh.push('haha', 'heihei'); console.log(hhh);//[ 1, 2, 3, 'haha', 'heihei' ] console.log(rtnvalue);//5 2、pop()方法

前端之js基础篇

岁酱吖の 提交于 2020-01-09 06:42:21
JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。而是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。 因此ECMAScript和JavaScript的关系是, 前者是后者的规格,后者是前者的一种实现 。 ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009 ECMAScript 5 添加"strict mode"严格模式 添加JSON支持 2011 ECMAScript 5.1 版本变更 2015 ECMAScript 6

JS生成随机字符串的多种方法

与世无争的帅哥 提交于 2020-01-09 04:04:27
这篇文章主要介绍了JS生成随机字符串的方法,需要的朋友可以参考下 下面的一段代码,整理电脑时,记录备查。 <script language="javascript"> function randomString(len) {   len = len || 32;   var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/   var maxPos = $chars.length;   var pwd = '';   for (i = 0; i < len; i++) {     pwd += $chars.charAt(Math.floor(Math.random() * maxPos));   }   return pwd; } document.write(randomString(32)); </script> 使用方法,就不用说了吧,调用randomString方法,参数len为返回的随机字符串长度。 传参就长度,如果不带参数默认输出32个字符。 JS产生随机数的几个用法! <script> function GetRandomNum(Min,Max) { var Range = Max - Min; var Rand =

javascript基础

不打扰是莪最后的温柔 提交于 2020-01-08 14:22:00
Day 01 变量 本质:变量是程序在内存中申请一块用来存放数据的空间 变量的使用 1.声明变量 2.赋值 变量的初始化:声明一个变量 并赋值 var age = 18; 变量语法拓展 1.更新变量:一个变量被重新赋值后,它原有的值就会被覆盖,变量值将以最后一次赋的值为准 var myname = '张三'; myname = '迪丽热巴'; console.log(myname);//迪丽热巴 2.同时声明多个变量,只需要写一个var,多个变量名之间用英文逗号隔开,最后一个用分号结束 var age = 18, address = '火影村', gz = 2000; 3.声明变量的特殊情况 3.1只声明不赋值,结果为undefined var age; console.log(age); //undefined 3.2不声明,不赋值直接使用某个变量会报错 3.3不声明,直接赋值使用能正常输出 变量命名规范 1.由字母,数字,下划线,美元符号组成。 2.严格区分大小写 3.不能以数字开头 4.不能是关键字,例如var,for,while 5.变量名必须有意义 6.遵守驼峰命名法,首字母小写,后面单词得首字母需要大写。如myFirstName 7.尽量不要使用name作为变量名 案例 交换两个变量 思路 1.需要一个临时变量 2.把apple1给临时变量temp 3

深浅拷贝

北慕城南 提交于 2020-01-08 13:07:19
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 数组浅拷贝 var arr = ['old', 1, true, null, undefined]; var new_arr = arr.concat(); var new_arr = arr.slice(); 浅拷贝:es6中有两种新方法 方法1: let [...spread]= [12, 5, 8, 130, 44]; //等同于:let spread = 浅克隆([12, 5, 8, 130, 44]) ` 方法2: Array.from(array)//创建一个新数组 数组深拷贝 //简单粗爆,就是不能拷贝函数 var new_arr = JSON.parse( JSON.stringify(arr) ); 浅拷贝的具体实现 深拷贝的具体实现 来源: oschina 链接: https://my.oschina.net/u/2285087/blog/3154772

数组的方法与技巧

醉酒当歌 提交于 2020-01-07 23:46:34
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> //1数组的添加 var arr = [ 1,2,3 ]; // alert( arr.push( 'abc' ) ); //往数组的最后一位添加 返回值是数组新的长度 //往数组前面添加 arr.unshift( 0 ) // alert( arr.unshift( 0 ) ); //返回值也是数组新的长度4 IE 6 7 不支持 unshift 返回值 //2数组的删除 var arr = [ 'TM', '钟毅', '张森', '杜鹏', 'Leo' ]; // alert( arr.pop() ); //删除最后一个 // alert( arr ); alert( arr.shift() ); //删除最前面的一个 // arr.shift(); alert( arr ); //3数组排队走 // arr.unshift(arr.pop()); //把最后一个扔到开头 // arr.unshift(arr.pop()); arr.push(arr.shift()) //把最前面的扔到后面 // alert( arr ); //4、数组的删除、替换、添加 arr

事件侦听及抛发

旧时模样 提交于 2020-01-07 21:47:33
事件基础: 1. 事件是一种通知机制。 2. 事件是按照事件类型进行匹配的。 事件侦听: 事件侦听对象 . addEventListener ( "click" , clickHandler ) ; function clickHandler ( e ) { //return 事件函数中不要使用return } 注意: clickHandler只能是一个回调函数,不能直接执行(不能直接加括号)。 因为当收到事件时,执行该函数,如果加()表示立即执行,收到事件后就不会执行了。 addEventListener这个方法并没有对于clickHandler函数的返回结果做处理,因此 clickHandler使用return无效。 这里clickHandler是不能传参的,clickHandler里面有且只有一个参数是event对象。 事件抛发: var target = new EventTarget ( ) ; target . addEventListener ( "chilema" , clickHandler ) ; var evt = new Event ( "chilema" ) ; //创建事件对象 target . dispatchEvent ( evt ) ; //派发事件(抛发事件) 注意: 分两种事件:系统派发事件,自定义派发事件。 侦听和派发的对象是同一个。