变量 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 编程经验的同学应该对“先声明.后使用”的规则很熟悉,如果使用未经声明的变量或 ...
随机推荐
- Python之对象的永久保存模块---pickle
经常遇到在Python程序运行中得到了一些字符串.列表.字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据. 这个时候Pickle模块就派上用场了,它可以将对象转换 ...
- Jersey常用注解解释 @DET、@PUT、@POST 、@DELETE等
uri : ... /resource/{id} public voide method(@PathParam("id") String userId){} uri : .../ ...
- EasyUI tabs指定要显示的tab
<div id="DivBox" class="easyui-tabs" style="width: 100%; height: 100%;& ...
- Git的上传步骤
Git的上传步骤 1.Git的命令基础 Git是当下最流行的版本控制工具(VCS),由linux系统之父linus开发.它能实现 团队中的代码协作开发,它在代码同步和代码管理方面功能强大,理念先进. ...
- 【Android自动化】测试android手机唤醒性能测试
# -*- coding:utf-8 -*- import time import os import common.common from common.getconfigs import GetC ...
- vue的组件详解
什么是组件 组件(Component)是 Vue.js 最强大的功能之一.(好比电脑中的每一个元件(键盘,鼠标,CPU),它是一个具有独立的逻辑和功能或界面,同时又能根据规定的接口规则进行互相融合,变 ...
- 「雅礼集训 2017 Day7」事情的相似度
「雅礼集训 2017 Day7」事情的相似度 题目链接 我们先将字符串建后缀自动机.然后对于两个前缀\([1,i]\),\([1,j]\),他们的最长公共后缀长度就是他们在\(fail\)树上对应节点 ...
- Python yield的用法
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法. 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: def addlist( ...
- [题目] luogu P2061 [USACO07OPEN]城市的地平线City Horizon
算法 线段树 + 离散化 思路 对\((x,y,h)\)的左右端点\(x,y\)进行离散化,离散化前的原值记为\(val[i]\),对每个矩形按高度\(h\)从小到大排序. 设离散化后的端点有\(M\ ...
- Jedis关于Set的API Demo
package com.daxin.jedis_datastructure; import java.util.Set; import org.junit.After; import org.juni ...