function testFunction(){
var testvar = 4
return testvar
}
// This causes a syntax error.
testvar = 5在以下示例中,仅 testFunction 中的代码处于严格模式。 函数外部的变量声明不会导致语法错误,但函数内部的声明会导致语法错误<pre t="code" l="js">function testFunction(){
"use strict"
// This causes a syntax error.
testvar = 4
return testvar
}
testvar = 5
undefined是js中的一特殊的变量。
1、在变量提升(预解析)阶段,只声明未定义,默认值就是undefined。
2、在JS的严格模式下(”usestrict”),没有明确的主体,this指的就是undefined。
3、函数定义没有返回值(return或者return后面什么也不带),默认的返回值就是undefined。
4、函数定义形参不传值,默认就是undefined。
5、对象没有这个属性名,属性值默认就是undefined。
6、在数组的find方法中,没有找到的情况下是undefined。
扩展资料:
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
参考资料:百度百科-javascript
var person1=createPerson("Nicholas",29,"software Engineer")var person1=new Person("Nicholas",29,"software Engineer")
区别在这两句话中,你可以看到第一个语句里面没有new关键字,直接执行一个函数;而第二个表达式中有new,也就是说是新实例化了一个对象。
JS中关于this的定义是:函数直接在全局中执行,那么this指向的是全局对象window。也就是说你在createPerson中new了一个o,但是你再执行this.name=name那么就等于是执行了window.name=name,o对象本身不会有任何印象,最后你return了o也只是得到了一个空对象。
而JS中执行了new之后,等于通过构造函数创建了一个新对象,那么这个构造函数中的this也就指向了这个新实例化的对象,此时this.name=name修改了新对象person1中的name值。
关于对象实例化的知识和this指向的问题题主还多翻一翻博客园的文章,讲的很详细,从长久发展来看先打好基础对你以后的道路更有好处。