js 函数的参数声明中用 var 与不用 var的区别
看清问题!是函数声明中的参数!!!!!!!!!!!!!!!!functionabc(vara){}functiondef(a){}...
看清问题!是函数声明中的参数 !!!!!!!!!!!!!!!!
function abc(var a){}
function def(a){} 展开
function abc(var a){}
function def(a){} 展开
6个回答
展开全部
var 声明的变量,作用域是当前 function
没有声明的变量,直接赋值的话, 会自动创建变量
但作用域是全局的.
//-----------------
function doSth() {
a = "AAA";
}
doSth(); // 执行一次 doSth
alert(a); // 可以看到 "AAA"
//-----------------
如果用了 var
//-----------------
function doSth() {
var a = "AAA";
}
doSth(); // 执行一次 doSth
alert(a); // 出错!!! 变量未定义, 因为 doSth 中声明的变量作用域只是 doSth 函数.
js数组中去除重复值
详细出处参考:http://www.jb51.net/article/25939.htm
typeof 运算符把类型信息当作字符串返回。typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "undefined."
typeof 语法中的圆括号是可选项。
<script>
Array.prototype.del = function() {
var a = {}, c = [], l = this.length;
for (var i = 0; i < l; i++) {
var b = this[i];
var d = (typeof b) + b;
if (a[d] === undefined) {
c.push(b);
a[d] = 1;
}
}
return c;
}
alert([1, 1, 2, 3, 4, 5, 4, 3, 4, 4, 5, 5, 6, 7].del());
alert(["ad","bc","cd","ad"].del());
</script>
方法二:
js数组中去除重复值
//去重复数组
var arr = ["123","123","123","123","sfsdf","123","345","123","123","345","456","567","sdc"];
var str = [];
for(var i = 0,len = arr.length;i < len;i++){
! RegExp(arr[i],"g").test(str.join(",")) && (str.push(arr[i]));
}
alert(str);
详细出处参考:http://www.jb51.net/article/25939.htm
方法三:
function districtArray(array){
var result = new Array();
for(var i in array){
if(result.indexOf(array[i]) == -1){
result.push(array[i]);
}
}
return result;
}
<script>
Array.prototype.distinct = function(){
var $ = this;
var o1 = {};
var o2 = {};
var o3 = [];
var o;
for(var i=0;o = $[i];i++){
if(o in o1){
if(!(o in o2)) o2[o] = o;
delete $[i];
}else{
o1[o] = o;
}
}
$.length = 0;
for(o in o1){
$.push(o);
}
for(o in o2){
o3.push(o);
}
return o3;
}
var a = [2,2,2,3,3,3,4,4,5,6,7,7];
alert("原数组:" + a);
alert("有重复的元素是:" + a.distinct());
alert("整理后的数组是:" + a);
alert("整理后的长度是:" + a.length)
</script>
详细出处参考:http://www.jb51.net/article/13727.htm
Javacode 删除重复数组的字符串
import java.util.Arrays;
import java.util.List;
import java.util.LinkedList;
public class Tests {
public static String[] array_unique(String[] a) {
// array_unique
List<String> list = new LinkedList<String>();
for(int i = 0; i < a.length; i++) {
if(!list.contains(a[i])) {
list.add(a[i]);
}
}
return (String[])list.toArray(new String[list.size()]);
}
public static void main(String[] args) {
String[] ar = {"dd","cc","ee","ff","gg","cc","ee"};
String[] s = array_unique(ar);
for(String aa : s) {
System.out.print(aa+" ");
}
}
}
没有声明的变量,直接赋值的话, 会自动创建变量
但作用域是全局的.
//-----------------
function doSth() {
a = "AAA";
}
doSth(); // 执行一次 doSth
alert(a); // 可以看到 "AAA"
//-----------------
如果用了 var
//-----------------
function doSth() {
var a = "AAA";
}
doSth(); // 执行一次 doSth
alert(a); // 出错!!! 变量未定义, 因为 doSth 中声明的变量作用域只是 doSth 函数.
js数组中去除重复值
详细出处参考:http://www.jb51.net/article/25939.htm
typeof 运算符把类型信息当作字符串返回。typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "undefined."
typeof 语法中的圆括号是可选项。
<script>
Array.prototype.del = function() {
var a = {}, c = [], l = this.length;
for (var i = 0; i < l; i++) {
var b = this[i];
var d = (typeof b) + b;
if (a[d] === undefined) {
c.push(b);
a[d] = 1;
}
}
return c;
}
alert([1, 1, 2, 3, 4, 5, 4, 3, 4, 4, 5, 5, 6, 7].del());
alert(["ad","bc","cd","ad"].del());
</script>
方法二:
js数组中去除重复值
//去重复数组
var arr = ["123","123","123","123","sfsdf","123","345","123","123","345","456","567","sdc"];
var str = [];
for(var i = 0,len = arr.length;i < len;i++){
! RegExp(arr[i],"g").test(str.join(",")) && (str.push(arr[i]));
}
alert(str);
详细出处参考:http://www.jb51.net/article/25939.htm
方法三:
function districtArray(array){
var result = new Array();
for(var i in array){
if(result.indexOf(array[i]) == -1){
result.push(array[i]);
}
}
return result;
}
<script>
Array.prototype.distinct = function(){
var $ = this;
var o1 = {};
var o2 = {};
var o3 = [];
var o;
for(var i=0;o = $[i];i++){
if(o in o1){
if(!(o in o2)) o2[o] = o;
delete $[i];
}else{
o1[o] = o;
}
}
$.length = 0;
for(o in o1){
$.push(o);
}
for(o in o2){
o3.push(o);
}
return o3;
}
var a = [2,2,2,3,3,3,4,4,5,6,7,7];
alert("原数组:" + a);
alert("有重复的元素是:" + a.distinct());
alert("整理后的数组是:" + a);
alert("整理后的长度是:" + a.length)
</script>
详细出处参考:http://www.jb51.net/article/13727.htm
Javacode 删除重复数组的字符串
import java.util.Arrays;
import java.util.List;
import java.util.LinkedList;
public class Tests {
public static String[] array_unique(String[] a) {
// array_unique
List<String> list = new LinkedList<String>();
for(int i = 0; i < a.length; i++) {
if(!list.contains(a[i])) {
list.add(a[i]);
}
}
return (String[])list.toArray(new String[list.size()]);
}
public static void main(String[] args) {
String[] ar = {"dd","cc","ee","ff","gg","cc","ee"};
String[] s = array_unique(ar);
for(String aa : s) {
System.out.print(aa+" ");
}
}
}
展开全部
var 声明的变量,作用域是当前 function
没有声明的变量,直接赋值的话, 会自动创建变量
但作用域是全局的.
//-----------------
function doSth() {
a = "AAA";
}
doSth(); // 执行一次 doSth
alert(a); // 可以看到 "AAA"
//-----------------
如果用了 var
//-----------------
function doSth() {
var a = "AAA";
}
doSth(); // 执行一次 doSth
alert(a); // 出错!!! 变量未定义, 因为 doSth 中声明的变量作用域只是 doSth 函数.
//-----------------
另外,如果 函数套函数,还会使情况变得更加复杂
--------------------------------------------------------
函数定义中,声明的函数参数作用域都是函数本身的
如果,在参数声明中出现 var , 属于语法错误
没有声明的变量,直接赋值的话, 会自动创建变量
但作用域是全局的.
//-----------------
function doSth() {
a = "AAA";
}
doSth(); // 执行一次 doSth
alert(a); // 可以看到 "AAA"
//-----------------
如果用了 var
//-----------------
function doSth() {
var a = "AAA";
}
doSth(); // 执行一次 doSth
alert(a); // 出错!!! 变量未定义, 因为 doSth 中声明的变量作用域只是 doSth 函数.
//-----------------
另外,如果 函数套函数,还会使情况变得更加复杂
--------------------------------------------------------
函数定义中,声明的函数参数作用域都是函数本身的
如果,在参数声明中出现 var , 属于语法错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没错 JavaScript是语言强度比较弱,可以声明也可不声明。
不管是 参数声明 还是 变量的声明 都是一样的,都是因为JavaScript是语言强度问题,说到 区别 在作用方面是没有的,但是 还是推荐 声明的好,按严禁的 语法 规范写,变量 不容易混乱,而且 作用范围 也很清晰。
不管是 参数声明 还是 变量的声明 都是一样的,都是因为JavaScript是语言强度问题,说到 区别 在作用方面是没有的,但是 还是推荐 声明的好,按严禁的 语法 规范写,变量 不容易混乱,而且 作用范围 也很清晰。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!
test();
function test()
{
i=1;
}
alert(i);
你试试,i前面加 var 和不加时候的区别就知道了.
test();
function test()
{
i=1;
}
alert(i);
你试试,i前面加 var 和不加时候的区别就知道了.
参考资料: http://www.jb51.net/article/24101.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
JavaScript是弱类型语言
在声明变量时 不需要注明变量类型
但是请在声明变量的时候写var 这样代码比较规范
还涉及一个静态变量的问题。。
在声明变量时 不需要注明变量类型
但是请在声明变量的时候写var 这样代码比较规范
还涉及一个静态变量的问题。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询