变量 var &函数new
声明变量
变量:变量是存储信息的容器,创建变量通常称为“声明”变量
变量必须以字母开头(小驼峰式myName);
变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做);
变量名称对大小写敏感(y 和 Y 是不同的变量);
var x;//变量声明之后,该变量是空的(它没有值underfined)。
var x=2;
var x=2,y=3;
var x,y;
x=2//全局
var myName;
重新声明 JavaScript 变量,该变量的值不会丢失
var carname="Volvo";
var carname; //变量 carname 的值依然是 "Volvo":
var carname="Volvo";
var carname="Volvo1";//覆盖Volvo1
只有声明被提升,而赋值或其他运算会留在原地
console.log(a);//underfined
var carname='Volvo';
解释器编辑:
var a;
console.log(a);
a='hello world';
删除变量
情景1:
var str="aa";
delete str ;
console.log(str)//aa
情景2:
str ="aa";
delete str ;
console.log(str)//str is not defined 未定义;
可以直接设置undefined就可以了:
var str="dd";
str=undefined;
console.log(str)
javascript的变量是无类型的(untype);
用var声明的变量是永久性的。所以当你试图用delete来删除其声明的变量时会报错。
函数定义
方式1:函数声明;(不属于任何对象,默认全局对象)
function MyFunction(){
return this;//默认返回,this 指向全局windows
}
MyFunction();不调用不执行,函数预编译;
方式2:函数表达式;(存储在变量中)
var myFunction=function(){};
myFunction();//先定义,后调用;
两者的区别:
解析器会先读取函数声明,并使其在执行任何代码之前可以访问;
而函数表达式则必须等到解析器执行到它所在的代码行才会真正被解释执行。
方式3:构造函数;
var myFunction = new Function("a", "b", "return a * b");
等同 var myFunction = function (a, b) {return a * b}
函数构造法参数必须加引号,一般不推荐用这种方法定义函数,因为这种语法会导致解析两次代码(第一次是解析常规ECMAScript代码,第二次是解析传入构造函数中的字符串),从而影响性能。
var name='haoxl';
function fun(){
var name='lili';
return new Function('return name');//不能获取局部变量
}
console.log(fun()());//haoxl
Function()构造函数每次执行时都会解析函数主体,并创建一个新的函数对象,所以当在一个循环或频繁执行的函数中调用Function()构造函数效率是非常低的。而函数字面量却不是每次遇到都会重新编译的,用Function()构造函数创建一个函数时并不遵循典型的作用域,它一直把它当作是顶级函数来执行。
方式4:自调用函数(自执行)
(function(n1,n2){
console.log (n1+n2); //独立作用域
})(1,3);//4
自执行函数 主要用于创建一个新的作用域,在此作用域内声明的变量,不会和其它作用域内的变量冲突或混淆,大多是以匿名函数方式存在,且立即自动执行
变量 var &函数new的更多相关文章
- var声明的成员变量和函数内声明的变量区别
1.函数内部,有var声明的是局部变量,没var的,声明的全局变量. 2.在全局作用域内声明变量时,有var 和没var声明的都是全局变量,是window的属性.通过变量var声明全局对象的属性无法通 ...
- JavaScript 中对变量和函数声明的“提前”
变量声明“被提前” JavaScript 的语法和 C .Java.C# 类似,统称为 C 类语法.有过 C 或 Java 编程经验的同学应该对“先声明.后使用”的规则很熟悉,如果使用未经声明的变量或 ...
- swift变量和函数
func getNums()->(Int,Int){ //swift函数可以返回多个变量 ,) } let (a,b) = getNums() //let是常量,一旦赋值后不可改变, var是变 ...
- jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}
笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...
- JS变量和函数的一些理解
今日看了下JS变量的一些文章,有些感触,把自己总结的一些写出来. JS初始化的过程1.JS解释器执行代码之前,创建全局变量2.用预定义的值和函数来初始化全局对象中的属性,3.搜索函数外的var声明,创 ...
- 变量作用域&函数作用域
一. 变量作用域 1)全局变量 在全局环境下声明的变量被视为全局变量. 在没有使用var进行声明的时候,变量就被定义为全局变量.在ES5的严格模式下,如果变量没有使用var来声明是会报错的. 2)局部 ...
- JavaScript中变量和函数声明的提升
现象: 1.在JavaScript中变量和函数的声明会提升到最顶部执行. 2.函数的提升高于变量的提升. 3.函数内部如果用var声明了相同名称的外部变量,函数将不再向上寻找. 4.匿名函数不会提升. ...
- [ActionScript 3.0] flash如何访问父级或者舞台上的变量、函数等的方法
方法一: 进行类型转换,先将root.parent强制转换为MovieClip类型,再进行使用,如下:MovieClip(root).i.MovieClip(this.parent).i.MovieC ...
- (转)JavaScript 中对变量和函数声明的“提前(hoist)”
变量声明“被提前” JavaScript 的语法和 C .Java.C# 类似,统称为 C 类语法.有过 C 或 Java 编程经验的同学应该对“先声明.后使用”的规则很熟悉,如果使用未经声明的变量或 ...
随机推荐
- go time类操作
fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6- ...
- mysql5.7如何修改密码以及密码如何忘记无密码登陆
今天买了一台阿里云服务器,Centos7.3系统,环境是LAMP.学生价9.8元是真的很实惠了.然后想修改一下mysql服务器的密码(mysql版本5.7),结果操作失误,密码给忘记了,导致新旧密码都 ...
- window下上传文件至linux(windows下如何访问linux)
========相信我,按照步骤来一定能成功====== 我将从三个方面来说明:为什么要搭建访问服务器.如何搭建访问服务器.windows如下访问 为什么要搭建访问Linux服务器 我们都知道,服务器 ...
- 解决Windows10或者其他版本Windows Update报错的问题
最近更新系统,发现报错0x80248014,系统版本为redstone2(创意者更新). 总结发现,只要是windows各个版本自动更新报错的,如0x80开头的一系列错误,都可以通过如下步骤解决: 手 ...
- mybatis使用<choose> <when>
一.需求 后台使用orcale数据库,mybatis做持久层,前台搜索功能,根据类型搜索,但是数据库中没有类型字段, 所以需要在where条件语句中进行判断,当type == x1 时和type == ...
- 网络编程_IP对象_InetAddress
import java.net.InetAddress; import java.net.UnknownHostException; public class IPDemo { public stat ...
- Django urls 路由
写url和视图的的对应关系 from django.conf.urls import url from django.contrib import admin from app名 import vie ...
- openssl交叉编译记录
本次任务是要完毕嵌入式Linux下对openssl程序的支持. 我的开发环境:ARM9开发板 和 嵌入式Linux操作系统.装有Linux系统(我的是ubuntu9.04)的PC机一台.串口和 ...
- SSM 搭建精美实用的管理系统
课程介绍 SSM 框架即 SpringMVC+Spring+Mybatis,相信各位朋友在投递简历时已直观感受到它的重要性,JavaWeb 相关工作的招聘要求中基本都包括了这三项技术能力. 由于其轻量 ...
- 转://执行impdp时出现ORA-39154错误的解决案例
问题描述如下导出过程正常:expdp \"/ as sysdba\" tables=user_a.t directory=mydir dumpfile=t.dmp logfile= ...