1.判断变量类型

    var num = '123';
if(typeof num == 'number'){
alert('this is a number');
}
else{
throw 'this is not a number';
}

2.arguments关键字

只在函数内部起作用,函数所有入参

function foo(x) {
console.log('x is :' + x);
for(var i=0;i<arguments.length;i++){
console.log('arguments['+i+']:'+arguments[i]);
}
}
foo(1,2,3);

3.rest关键字

除了函数定义参数外的其他入参

function foo(x,...rest) {
console.log('x is :' + x);
for(var i=0;i<arguments.length;i++){
console.log('arguments['+i+']:'+arguments[i]);
}
console.log(rest)
}
foo(1,2,3);

4.JavaScript会在行末自动添加分号

function foo() {
// right
return {name: 'foo'}
// wrong
//return
//{name:'foo'}
}
result = foo();
console.log(result.name);

5.变量作用域

1)内部函数可以访问外部函数变量,外部变量不能访问内部函数的变量

function foo() {
x = 1;
function calc() {
// right
y = x + 1;
}
}
// wrong
console.log(x);

2)内部函数变量屏蔽外部变量

function foo() {
x = 1;
function calc() {
x = 2;
// 2
console.log(x);
}
// 1
console.log(x);
}

3)变量提升

javascript函数在执行时,会先扫描所有的变量定义,放在函数顶部

function foo() {
var x = 'hello ' + y;
var y ='tomorrow';
// 输出hello undefined
console.log(x);
}
foo();

可以看出,可以执行成功,y有申明,但是y要到下一条语句才会赋值。

4)全局作用域

不在任何函数内定义的变量具有全局作用域

实际上,javascript有一个全局对象window,全局变量被绑定到这个全局对象window

var x = 100
// 100
alert(window.x)

window对象表示浏览器打开的当前窗口,拥有alert,length,height,location,screen等很多属性

5)命名空间

全局变量会绑定到window上,不同的javascript文件使用相同的全局变量会造成冲突。

减少这种问题的一种方法是,把各自的变量和函数全部绑定到各自的全局变量,如:

var MYAPP = {};

MYAPP.name = 'myapp';

MYAPP.version = 1.0;

MYAPP.foo = function(){

return 'foo';

};

6)局部作用域

javascript的变量作用域针对的是函数,像for循环等语句块中的变量,属于块级作用域,是不具有局部作用域的。

function foo() {
for(var i=0;i<10;i++){ }
i = i +10;
// i=20
console.log(i)
}
foo();

ES6引入了let关键字,使用let可以声明一个块级作用域的变量

function foo() {
for(let i=0;i<10;i++){ }
// wrong
console.log(i)
}
foo();

7)常量

ES6引入了const关键字,来申明一个常量

const PI =3.14

8)解构赋值

同时对一组变量进行赋值

var array = ['hello', 'world']
var a = array[0];
var b = array[1];
var [a,b] = ['hello', 'world']

8)异常处理

try{
}
catch(e){
}
finally{
}

javascript基础拾遗(一)的更多相关文章

  1. javascript基础拾遗(十三)

    1.jQuery的特点 jQuery是目前非常流行的javascript库,理念是"Write Less,Do More" 1)消除浏览器差异 2)简洁的操作DOM方法 3)轻松实 ...

  2. javascript基础拾遗(十二)

    1.javascript的单线程特性 在javascript中,所有的代码都是单线程的 因此所有的网络操作,浏览器事件,都必须是异步执行的,异步执行的逻辑是回调. function callback( ...

  3. javascript基础拾遗(十一)

    1.DOM操作 1)查找 //根据id查找 document.getElementById() //根据html标签查找 documnet.getElementByTagName() //根据样式cl ...

  4. javascript基础拾遗(十)

    1.支持ES6标准的浏览器 IE10+ Chrome Safari Firefox 移动端浏览器统一都支持 需要注意的是,不同浏览器对各个特性的支持也不一样 2.window对象 当前浏览器窗口对象 ...

  5. javascript基础拾遗(七)

    1.对象的继承__proto__ var Language = { name: 'program', score: 8.0, popular: function () { return this.sc ...

  6. javascript基础拾遗(六)

    1.Date内置对象 获取系统时间 var now = new Date() console.log(now) console.log(now.getDate()) console.log(now.g ...

  7. javascript基础拾遗(五)

    1.什么是箭头函数 ES6引入的一种新的函数,类似匿名函数,x=>xx 箭头左端为函数参数,右端为函数体 相当于 function (x){ retutn xx } 2.箭头函数的特点 更简洁 ...

  8. javascript基础拾遗(二)

    1.对象定义 定义属性 var language = { name:'javascript', score:9.0 }; console.log(language.name) console.log( ...

  9. javascript基础拾遗(九)

    1.class关键字 ES6引入了新的class关键字编写对象 function Language(name){ this.name = name this.score = 8.0 } Languag ...

随机推荐

  1. Javascript 计算字符串所占字节数

    最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,众所周知的,js是使用Unicode编码的.而Unicode的实现有N种,其中用的最多的就是UTF-8和UTF-16. ...

  2. tensorflow代码中的一个bug

    tensorflow-gpu版本号 pip show tensorflow-gpu Name: tensorflow-gpu Version: 1.11.0 Summary: TensorFlow i ...

  3. 推荐系统排序(Ranking)评价指标

      一.准确率(Precision)和召回率(Recall)  (令R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行为列表.) 对用户u推荐N个物品(记为R(u) ...

  4. 完善_IO, _IOR, _IOW, _IOWR 宏的用法与解析

    _IO, _IOR, _IOW, _IOWR 宏的用法与解析  原文地址:http://www.eefocus.com/ayayayaya/blog/12-03/245777_20cdd.html 作 ...

  5. Linux命令之lsb_release - 查看当前系统的发行版信息

    用途说明 lsb_release命令用来查看当前系统的发行版信息(prints certain LSB (Linux Standard Base) and Distribution informati ...

  6. UCP规模估算方法介绍 基于UCP方法的软件项目成本估计及其应用方法,软件,项目,UCP方法,应用,项目估算及软件及应用,软件估算,项目成本,软件项目

    基于UCP方法的软件项目成本估计及其应用 UCP说明: UCP = 交易的UCP数 + Actor的UCP数,1.交易/Actor在估算时按复杂度分为简单.普通.复杂.主观类别,权重分别对应1.2.3 ...

  7. lamp环境服务器配置文档

    服务器配置命令开始(蓝色为输入命令,灰色为反馈内容): Yum update Reboot; yum -y install mysql mysql-server mysql-devel php php ...

  8. Spring-Boot服务注册与发现

    关于Eureka服务注册与发现的示例可以参见:http://blog.didispace.com/springcloud1/ 服务注册管理器原理如下图所示: 1.建立eureka服务器 @Enable ...

  9. Mac PATH你所需要了解的

    关于Mac环境变量你需要知道: 0.何为环境变量? 1.如何查看环境变量? 2.如何配置环境变量? 3.如何重置环境变量? 0.环境变量: 所谓环境变量,$PATH,应用于Linux,OS X,Uni ...

  10. openkm预览功能报错:flexpaper License key not accepted(no key passed to viewer)

    openkm:6.3.4 使用google浏览器打开,想预览文件,但是pdf.word和图片都不能显示.只是显示空白. 换成IE后,再次尝试,发现了报错信息: 解决方案: 1- Stop openkm ...