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