js里面的var是什么?

JavaScript05

js里面的var是什么?,第1张

js中的var是定义变量的意思,使用和不使用var都能定义变量,但是两个变量的作用域不同。

1、新建html文档,在body标签中添加script标签,使用var定义一个变量a并给变量赋值为1...

2、定义一个demo函数,在函数里面重新使用var定义一个变量a,由于函数外的变量a是全局...

3、将var去掉,直接定义变量a,

区别的话,主要有几个

1:作用域不一样,var是函数作用域,而let是块作用域,也就是说,在函数内声明了var,整个函数内都是有效的,比如说在for循环内定义了一个var变量,实际上其在for循环以外也是可以访问的,而let由于是块作用域,所以如果在块作用域内(比如说for循环内)定义的变量,在其外面是不可被访问的,所以let用在for (let ii <ni++)是一种很推荐的写法

2. let不能在定义之前访问该变量,但是var是可以得。也就是说,let必须是先定义,再使用,而var先使用后声明也行,只不过直接使用但是没有却没有定义的时候,其值为undefined,这块要注意,这一块很容易出问题,这也是个人认为的let比var更好的地方,至于为啥会有这种区别呢,实际上var有一个变量提升的过程。也就是说,当这个函数的作用域被创建的时候,实际上var定义的变量都会被创建,并且如果此时没有初始化的话,则默认会初始化一个undefined。

3. let不能被重新定义,但是var是可以的。这个呢,我个人认为,从规范化的角度来说,是更推荐的,比如说,你在前面声明了一个变量,后来写代码,因为忘了之前的代码逻辑,又声明了一个同名的变量,如果这俩变量逻辑不一样,并且后面都要用的话,很容易出问题,且不容易维护。

总之呢,let从规范化的角度来说,要比var要进步了很大一步。所以一般情况下的话,推荐用let,const这些。当然啦,如果相对var,const和let有更深入的了解,推荐几篇小文章,这样你就会对其相关知识点有更加深入的了解了。Javascript基础之-var

Javascript基础之-var,let和const深入解析(一)

Javascript基础之-var,let和const深入解析(二)

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 = 0i <li++) {

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.lengthi <leni++){

! 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=0o = $[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 = 0i <a.lengthi++) {

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+" ")

}

}

}